填充两个视图之间的垂直空间(+滚动)

时间:2015-05-04 18:52:58

标签: android android-layout views

我有3个观点 1.视图A具有固定的高度并与屏幕顶部对齐 2.视图B具有固定的高度并与屏幕底部对齐 3.视图C必须填充视图A和B之间的垂直空间,但必须是最小X高度。 如果A和B之间的垂直空间小于Xdp,则必须显示垂直滚动条(并且视图B必须滚动,而不是粘在底部。)

到目前为止(稍微简化),它可能完全错误:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout
            android:id="@+id/layout_banner_top"
            android:layout_width="match_parent"
            android:layout_alignParentTop="true"
            android:layout_height="@dimen/statistics_probanner_height">

         </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" <!-- UPD here as McAdam331 suggested -->
            android:minHeight="@dimen/statistics_circular_progress_container_height"
            android:layout_below="@+id/layout_banner_top"
            android:layout_above="@+id/layout_banner_bottom">

            <!-- here is some content -->

         </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/statistics_bottom_bar_height"
            android:id="@+id/layout_banner_bottom"
            android:layout_alignParentBottom="true">

        </RelativeLayout>
    </RelativeLayout>
</ScrollView>

外观如何:
Picture 1
Picture 2

目前,视图中的minHeight(视图C)设置为600dp,但正如您在图2中看到的那样,视图C填充了顶视图和底视图之间的可用空间,高度太小而滚动不显示。

是否可以实施?我怎样才能实现这种行为?

2 个答案:

答案 0 :(得分:0)

问题在于您已将高度和高度设置为相同的值:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/statistics_circular_progress_container_height"
    android:minHeight="@dimen/statistics_circular_progress_container_height"
    android:layout_below="@+id/layout_banner_top"
    android:layout_above="@+id/layout_banner_bottom">

换句话说,视图不会超过您已经提供的高度。我要做的是将layout_height设置为wrap_content,并保持min_height属性不变。

这样,如果空间大于给定的尺寸,它只会绑定横幅的上方和下方。否则,它将保持最小值。

答案 1 :(得分:0)

解决。

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fillViewport="true">

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

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/statistics_probanner_height"
            android:gravity="top">

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:minHeight="@dimen/statistics_circular_progress_container_height">

        </RelativeLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/statistics_bottom_bar_height"
            android:layout_gravity="bottom">
        </LinearLayout>

    </LinearLayout>
</ScrollView>