android - studio - relativelayout import




頂部和底部的TextViews,剩餘的空間用ListView填充 (4)

使用LinearLayout如下:

<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>

我想把一個TextView的頂部,另一個底部,和一個ListView之間使用剩餘的空間。 但是,我的ListView將所有的空間都放在最下面,使得最後的TextView不能顯示出來。 我可以使它顯示出來的唯一方法是給ListView一個固定的高度,如100dp。

我的佈局:

<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>

這可以通過兩種方式來實現

1)使用線性佈局(直線前進)

2)使用相對佈局,將視圖位置與其他視圖相關聯。

在你的情況

1)改變相對LinearLayout和工作將完成。

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>

這應該通過使用android:layout_above和android:layout_below在TextView之間放置ListView來解決您的問題:

<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>

使用LinearLayout和Orientation Vertical來代替使用RelativeLayout。

我認為它解決了你的問題

謝謝





relativelayout