如何填充RelativeLayout

时间:2015-11-17 01:31:53

标签: android relativelayout

我有两个观点。顶视图设置为...

 android:layout_alignParentTop="true"

底部设置为......

 android:layout_alignParentBottom="true"

如何用第三个视图填充剩余空间?根据这个答案here,我应该使用这样的框架布局......

<FrameLayout 
   android:layout_below="@+id/toplayout" 
   android:layout_above="@+id/bottomlayout"/>

但是我需要指定高度和宽度。我应该指定什么样的高度和宽度?

3 个答案:

答案 0 :(得分:13)

这是我的解决方案

<RelativeLayout
     ...
   >
        <YourLayout
         android:id="@+id/toplayout"
         android:layout_alignParentTop="true"
        />

        <YourLayout
         android:id="@+id/bottomlayout"
         android:layout_alignParentBottom="true"
        />

        <MiddleLayout 
          <!-- in your case it is FrameLayout -->
           android:layout_width="match_parent"
           android:layout_height="match_parent" 
          <!-- or android:layout_height="wrap_content" according to the_profile -->
           android:layout_below="@+id/toplayout" 
           android:layout_above="@+id/bottomlayout"/>
    </RelativeLayout>

希望这个帮助

答案 1 :(得分:2)

你可以利用加权。 android:layout_weight属性通常填充剩余的空间(或平均分配)。在你的情况下,它将是这样的:

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

    <LinearLayout
            android:id="@+id/top_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

    <LinearLayout
            android:id="@+id/middle_one_that_fills"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">


    <LinearLayout
            android:id="@+id/bottom_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">   

</LinearLayout>

答案 2 :(得分:2)

只要您的根布局是 RelativeLayout ,并且您使用layout_alignParentTop作为顶视图,layout_alignParentBottom作为底部视图,就像您提到的那样,那么它应该工作而不需要中间视图:

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

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"/>

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"/>
</RelativeLayout>

或者,如果您的根视图是 LinearLayout ,则可以使用鲜为人知但名称恰当的Space视图。空间是:

  

轻量级View子类,可用于在通用布局中创建组件之间的间隙。

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

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

    <Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>