在线性布局中适合8种框架布局

时间:2014-09-19 01:01:36

标签: android xml android-layout layout

我有一个应用程序需要在以下格式的线性布局中放置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>

无论我做什么,布局都没有正确对齐,有时一帧布局中的图像会覆盖其他布局。

任何帮助都将深表感谢。

1 个答案:

答案 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。原因是上面的方法包含嵌套权重,这对性能不利,而且这个东西不会滚动。所以在较小的设备上会产生奇怪的结果。