我对android视图感到疯狂。我想要一个顶部(A)上有一个栏的布局和一个带有height="wrap_content"
的应用程序底部(C)的栏。中间(B)的完整剩余空间应该是具有另一个布局或TextView
或其他内容的内容区域。但我不能让这个工作。我尝试了很多布局,但是当我{B}做android:layout_height="match_parent"
时,C就消失了。有任何想法吗?提前致谢
答案 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
alignParentTop
和alignParentBottom
属性,内容 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。您可以根据自定义需求更改数字。