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