android listview layout textview relativelayout

android - TextViews en la parte superior e inferior, espacio restante lleno de ListView



layout relativelayout (5)

Esto debería resolver su problema al colocar su ListView entre TextViews usando android: layout_above y android: layout_below:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/id_task_list_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/title_task_list" style="?android:attr/listSeparatorTextViewStyle" /> <TextView android:id="@+id/id_task_list_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="OMG Test" /> <ListView android:id="@+id/id_task_list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/id_task_list_test" android:layout_below="@id/id_task_list_title"/> </RelativeLayout>

Estoy tratando de poner un TextView en la parte superior, otro en la parte inferior, y un ListView en el medio usando el espacio restante. Sin embargo, mi ListView está llevando todo el espacio al final, haciendo que el último TextView no se muestre. La única forma en que puedo hacer que se muestre es darle a ListView una altura fija, como 100dp.

Mi diseño:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/id_task_list_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/title_task_list" style="?android:attr/listSeparatorTextViewStyle" /> <ListView android:id="@+id/id_task_list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/id_task_list_title" /> <TextView android:id="@+id/id_task_list_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/id_task_list_view" android:text="OMG Test" /> </RelativeLayout>


Esto se puede hacer a través de la codificación obteniendo la altura de la pantalla y el ancho del parámetro de diseño de la vista para mostrar una vista como esta

altura de la vista de lista = altura de pantalla- (altura de textView1 + altura de textView2).


Se puede lograr de una de las dos formas

1) Uso del diseño lineal (en línea recta)

2) Usar el diseño relativo al hacer referencia a la posición de vista con respecto a las otras vistas.

En tu caso

1) Cambio relativo a LinearLayout y se realizará el trabajo.

2)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/id_task_list_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/title_task_list" style="?android:attr/listSeparatorTextViewStyle" /> <ListView android:layout_below="@+id/id_task_list_title" android:id="@+id/id_task_list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/id_task_list_title" /> <TextView android:layout_below="@+id/id_task_list_view" android:id="@+id/id_task_list_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/id_task_list_view" android:text="OMG Test" /> </RelativeLayout>


Use LinearLayout de la siguiente manera:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical"> <TextView android:id="@+id/id_task_list_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/title_task_list" style="?android:attr/listSeparatorTextViewStyle" /> <ListView android:id="@+id/id_task_list_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <TextView android:id="@+id/id_task_list_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="OMG Test" /> </LinearLayout>


En lugar de usar RelativeLayout, use LinearLayout con orientación vertical.

Creo que resuelve tu problema

Gracias