He implementado un listview en mi app de Android (API 8). Sin embargo, la lista consta de sólo tres elementos y, por tanto, más de la mitad de la pantalla está vacía. Quiero ampliar el listview para cubrir toda la pantalla del teléfono. Cuáles son algunas maneras de hacer lo mismo?

Aquí está mi diseño del archivo XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
android:background="@color/white"
android:shape="rectangle"
android:paddingTop="5dp"
android:paddingBottom="0dp"
>


<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:weightSum="100"
    >

    <ImageView
        android:layout_weight="40"
        android:id="@+id/test_image"
        android:layout_width="158dp"
        android:layout_height="52dp"
        android:contentDescription="@string/footer"
        android:src="@drawable/logo1" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="127dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_weight="60" 
        android:prompt="@string/city_prompt"
        />
</LinearLayout>

  <LinearLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"   
    >
    <ListView 
    android:id="@android:id/list"
    android:layout_weight="1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:drawSelectorOnTop="true"
    android:layout_gravity="center"
    android:dividerHeight="2dp"
    />


</LinearLayout>


</LinearLayout>

Por favor, tenga en cuenta que quiero que los elementos de la lista para cubrir toda la pantalla, con solo tres cosas en su lugar.

  • Quitar el padre de ListView que es LinearLayout y probar. También tengo el mismo problema que listView no llenar la pantalla entera.
  • Ver a mi pregunta stackoverflow.com/questions/10943410/…
  • podría intentar con android:dividerHeight ?
InformationsquelleAutor rahulritesh | 2012-06-15

3 Comentarios

  1. 2

    ListView no llenan todo el espacio de forma automática. Si quieres lograr esto, porque aquí, ListView está disfrutando al máximo el espacio, pero no a sus elementos. Si usted todavía desea hacer grandes filas, en el caso de la menor de los artículos, a continuación, proporcionar a la altura de los elementos de la lista, en el método getView el uso de la getCount() método.

    Por ejemplo, desea mostrar un máximo de seis elementos a la vez en la pantalla en la lista. A continuación, Aplicar ListView como este:

    Obtener el ancho y la altura de la pantalla, utilizando el código siguiente en el método onCreate:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

    Ahora en getView, haga lo siguiente:

    int itemHeight = 0;
    if (getCount() >= 6)
        itemHeight = height/6;
    else
        itemHeight = height/getCount();
    
    LinearLayout llView=new LinearLayout(YourActivityName.this);
    //Or inflate through XML
    
    llView.setLayoutParams(new LayoutParams(LayoutParams.Fill_Parent, itemHeight));
    //Do other functionality
    • ¿Puede por favor explicar esto en detalle?
    • plz de verificación editado mi respuesta.
    • Hey! gracias por eso 🙂 me pega el código en el método onCreate. Sin embargo,se muestra un error en la pantalla.getSize(tamaño); (Error: El método getSize(Punto) no está definido por el tipo de Visualización) También, puede usted por favor decirme cómo hago para poner el segundo código. No tengo un getView función en el momento!
    • hey, por favor, hágamelo saber cómo ir sobre él, en detalle?
  2. 2

    He copiado tu XML, pegado y probado, y funciona bien. Una cosa más para decir es que usted no debe usar layout_height="wrap_content". En lugar de eso puede dar como android:layout_height="0dip" como ya ha utilizado android:layout_weight="1" que hará ListView llenar el resto del área de su LinearLayout.

    • Por favor, consulte la edición!
    • No, esto no funcionará si usted tiene menos número de filas, usted debe encontrar una manera de cómo aumentar la altura de la fila de la vista de lista.
  3. 1

    Primer cambio:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" 
        android:background="@color/white"
        android:shape="rectangle"
        android:paddingTop="5dp"
        android:paddingBottom="0dp"
    >

    Tthen en segundo lugar, cambiar:

    <ListView 
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#000000"
        android:drawSelectorOnTop="true"
        android:layout_gravity="center"
        android:dividerHeight="2dp"
    />
    • Lo siento decepcionaros, pero incluso esto no funciona!
    • Eso es porque fill_parent=match_parent. stackoverflow.com/questions/5761960/…
    • Usar diseño inflater hacer su propia fila y ajustar la Altura de la fila.

Dejar respuesta

Please enter your comment!
Please enter your name here