GridLayout无法均匀填充行(Android)

时间:2015-10-27 21:58:39

标签: android android-5.0-lollipop android-gridlayout

我试图使用GridLayout(API 21)获得均匀填充的网格。使用layout_columnWeight属性可以在水平方向上填充。与layout_rowWeight属性相同(参见屏幕截图)enter image description here。我很无能......似乎这两个属性都没有以同样的方式运作。

此外,更简化的布局显示相同的行为(1行x 2列工作,2行x 1列失败)。同时明确添加layout_row和layout_column属性也不会改变任何内容。

请不要回答"使用linearLayout"。我想让它与GridLayout一起使用。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="#0099cc" 
    tools:context=".Locomotion">

    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnCount="2"
        android:rowCount="2">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="north west"
            android:id="@+id/textViewNW"
            android:layout_rowSpan="1"
            android:layout_rowWeight="1"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="center|fill"
            android:background="#fe4141" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="north east"
            android:id="@+id/textViewNE"
            android:layout_rowSpan="1"
            android:layout_rowWeight="1"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="center|fill"
            android:background="#51f328" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="south west"
            android:id="@+id/textViewSW"
            android:layout_rowSpan="1"
            android:layout_rowWeight="1"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="center|fill"
            android:background="#fefe00" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="south east"
            android:id="@+id/textViewSE"
            android:layout_rowSpan="1"
            android:layout_rowWeight="1"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="center|fill"
            android:background="#0080f0" />

    </GridLayout>
</FrameLayout>

提前感谢任何暗示!

托马斯

1 个答案:

答案 0 :(得分:1)

这很难。不得不发挥创意来解决它。基本上我的解决方案是为每个col嵌套GridLayouts,主GridLayout为1行。每个col GridLayout也必须在orientation =&#34; verticle&#34;宽度/高度=&#34; wrap_content&#34;

结果:

enter image description here

以下是代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0099cc"
    tools:context=".Locomotion">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="2"
        android:rowCount="1">

        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:columnCount="1"
            android:rowCount="2"
            android:layout_column="0"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="fill"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewNW"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_columnSpan="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_row="0"
                android:layout_rowSpan="1"
                android:layout_rowWeight="1"
                android:background="#fe4141"
                android:text="north west"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textViewSW"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_columnSpan="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_row="1"
                android:layout_rowSpan="1"
                android:layout_rowWeight="1"
                android:background="#fefe00"
                android:text="south west"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </GridLayout>

        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:columnCount="1"
            android:rowCount="2"
            android:layout_column="1"
            android:layout_columnSpan="1"
            android:layout_columnWeight="1"
            android:layout_gravity="fill"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewNE"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_columnSpan="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_row="0"
                android:layout_rowSpan="1"
                android:layout_rowWeight="1"
                android:background="#51f328"
                android:text="north east"
                android:textAppearance="?android:attr/textAppearanceLarge" />


            <TextView
                android:id="@+id/textViewSE"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_columnSpan="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_row="1"
                android:layout_rowSpan="1"
                android:layout_rowWeight="1"
                android:background="#0080f0"
                android:text="south east"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </GridLayout>
    </GridLayout>
</FrameLayout>