顶部栏,底栏和布局的布局剩余空间内容视图

时间:2014-05-19 19:39:59

标签: android android-layout

我对android视图感到疯狂。我想要一个顶部(A)上有一个栏的布局和一个带有height="wrap_content"的应用程序底部(C)的栏。中间(B)的完整剩余空间应该是具有另一个布局或TextView或其他内容的内容区域。但我不能让这个工作。我尝试了很多布局,但是当我{B}做android:layout_height="match_parent"时,C就消失了。有任何想法吗?提前致谢enter image description here

4 个答案:

答案 0 :(得分:6)

您可以使用android:layout_weight属性来实现这一点,但您的父容器必须是 LinearLayout ,在我的示例中,我只使用LinearLayout作为父视图的子项,但您可以使用另一种观点:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:orientation="vertical">

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

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

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

</LinearLayout>

如果你很好奇并且想知道它是如何运作的......这是explanation,祝你好运:)

答案 1 :(得分:0)

将内容放入RelativeLayout alignParentTopalignParentBottom属性,内容 A C 以及{{1 }}和below相关内容 B 的属性,如下所示:

above

如果不起作用,您可以尝试使用<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <!-- create content A and C before --> <LinearLayout android:id="@+id/A" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/C" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical" > </LinearLayout> <!-- create content B regarding the previous ids --> <LinearLayout android:id="@+id/B" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/A" android:layout_above="@id/C" android:orientation="vertical" > </LinearLayout> </RelativeLayout> 而不是wrap_content更改内容 B 的高度。如果这有帮助,请告诉我。

答案 2 :(得分:0)

使用重量:

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

    <FrameLayout
        android:id="@+id/A"
        android:layout_width="match_parent"
        android:layout_height="50dp">
        <!-- Your view here or replace FrameLayout -->
    </FrameLayout>

    <FrameLayout
        android:id="@+id/B"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1">
        <!-- Your view here or replace FrameLayout -->
    </FrameLayout>

    <FrameLayout
        android:id="@+id/C"
        android:layout_width="match_parent"
        android:layout_height="50dp">
        <!-- Your view here or replace FrameLayout -->
    </FrameLayout>

</LinearLayout>

将高度设置为0是出于性能原因,因为重量会改变它。

答案 3 :(得分:0)

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

<TextView 
    android:id="@+id/top_bar"
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp"/>
 <TextView 
    android:id="@+id/middle_area"
    android:layout_weight="14"
    android:layout_width="match_parent"
    android:layout_height="0dp"/>
  <TextView 
    android:id="@+id/bottom_bar"
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp"/>

android_layout_weight与LinearLayout结合使用可以帮到你。尝试上面的代码,并根据您的需要调整android_layout_weight。 在我的例子中,顶部栏将占据屏幕的1/16,底栏将占据屏幕的1/16,而middle_area将占据屏幕的14/16。您可以根据自定义需求更改数字。