如何使View填充剩余空间

时间:2014-06-05 16:47:32

标签: android xml

所以我有两个"部分"到我的屏幕。我有顶部部分是ScrollView,底部是随机文本。底部的随机文本总是会改变大小,所以有时可能需要40dp,有时是20dp等。

我的问题是,有没有办法让底部动态(不会丢失文字)并使顶部的scrollview适应新的尺寸,并限制其自身的尺寸以填充剩余的空间"基于底部使用的部分?

像这样:

enter image description here enter image description here

如您所见,滚动视图仅填充剩余可用空间。

我正在寻找仅使用XML的解决方案

需要帮助!

2 个答案:

答案 0 :(得分:11)

你可以试试这个。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/bottomTextView">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="500dp"
            android:background="@android:color/holo_red_dark"
            android:text="Test" />
    </LinearLayout>
</ScrollView>

<TextView
    android:id="@+id/bottomTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@android:color/darker_gray"/>

或者

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="500dp"
            android:background="@android:color/holo_red_dark"
            android:text="Test" />
    </LinearLayout>
</ScrollView>

<TextView
    android:id="@+id/bottomTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/darker_gray"/>

答案 1 :(得分:3)

将两个视图换行为垂直LinearLayout;

位于顶部的视图:height = "0dp"weight = 1

底部的视图:height = "wrap_content"