我有一个应用程序需要在以下格式的线性布局中放置8个框架布局:
----------------------
1 | 2
----------------------
3 | 4
----------------------
5 | 6
----------------------
7 | 8
我为此创建的XML文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/My_Container_1_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
<FrameLayout
android:id="@+id/My_Container_2_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/My_Container_3_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
<FrameLayout
android:id="@+id/My_Container_4_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/My_Container_5_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
<FrameLayout
android:id="@+id/My_Container_6_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/My_Container_7_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
<FrameLayout
android:id="@+id/My_Container_8_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</FrameLayout>
</LinearLayout>
</LinearLayout>
无论我做什么,布局都没有正确对齐,有时一帧布局中的图像会覆盖其他布局。
任何帮助都将深表感谢。
答案 0 :(得分:0)
您需要将layout_weight = 1添加到方向为水平的所有四个内部线性布局中。添加match_parent和其他属性以获得所需的结果我在这里添加了其余的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight="1"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/My_Container_1_ID"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<FrameLayout
android:id="@+id/My_Container_2_ID"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
....
....
....
</LinearLayout>
如果您向其他3个布局添加类似的属性,它将按预期工作。注意0dp是在使用权重时由Android建议编写的。它会工作但你应该考虑使用支持v7库中的GridLayout。原因是上面的方法包含嵌套权重,这对性能不利,而且这个东西不会滚动。所以在较小的设备上会产生奇怪的结果。