GridLayout奇怪的行为

时间:2013-11-04 00:52:47

标签: android grid-layout

我正在关注GridLayout http://blog.stylingandroid.com/archives/669上的本教程。我已经按如下方式实现了代码:

<?xml version="1.0" encoding="utf-8"?>

<GridLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="4"
        android:rowCount="4">

    <TextView
            android:text="1,1"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="1,2"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="1,3"
            android:layout_gravity="fill_horizontal"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="1,4"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="2,1"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="2,2"
            android:gravity="center_horizontal"
            android:layout_gravity="center"/>

    <TextView
            android:text="2,3"
            android:layout_gravity="fill_horizontal"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="2,4"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="3,1"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="3,2"/>

    <TextView
            android:text="3,3 longer"
            android:layout_gravity="fill_horizontal"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="3,4"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="4,1"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="4,2"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="4,3"
            android:layout_gravity="fill_horizontal"
            android:gravity="center_horizontal"/>

    <TextView
            android:text="4,4"
            android:gravity="center_horizontal"/>

</GridLayout>

哪个产生这个网格: enter image description here

如果我理解fill_horizontal的工作方式,那么就不会使第3列符合文本所需的大小,它使第3列尽可能大(因为gridlayout layout_width是match_parent)。

当我将一些较长的文本添加到另一列(比如2,2)时,一切都会改变。

<TextView
        android:text="1,1"
        android:gravity="center_horizontal"/>

<TextView
        android:text="1,2"
        android:gravity="center_horizontal"/>

<TextView
        android:text="1,3"
        android:layout_gravity="fill_horizontal"
        android:gravity="center_horizontal"/>

<TextView
        android:text="1,4"
        android:gravity="center_horizontal"/>

<TextView
        android:text="2,1"
        android:gravity="center_horizontal"/>

<TextView
        android:text="2,2 longer, also"
        android:gravity="center_horizontal"
        android:layout_gravity="center"/>

<TextView
        android:text="2,3"
        android:layout_gravity="fill_horizontal"
        android:gravity="center_horizontal"/>

<TextView
        android:text="2,4"
        android:gravity="center_horizontal"/>

<TextView
        android:text="3,1"
        android:gravity="center_horizontal"/>

<TextView
        android:text="3,2"/>

<TextView
        android:text="3,3 longer"
        android:layout_gravity="fill_horizontal"
        android:gravity="center_horizontal"/>

<TextView
        android:text="3,4"
        android:gravity="center_horizontal"/>

<TextView
        android:text="4,1"
        android:gravity="center_horizontal"/>

<TextView
        android:text="4,2"
        android:gravity="center_horizontal"/>

<TextView
        android:text="4,3"
        android:layout_gravity="fill_horizontal"
        android:gravity="center_horizontal"/>

<TextView
        android:text="4,4"
        android:gravity="center_horizontal"/>

生产: enter image description here

那么发生了什么改变事情?

1 个答案:

答案 0 :(得分:1)

请注意,删除

时不会发生此“更改” 来自

layout_gravity =“center”

      <TextView
        android:text="2,2 longer, also"
        android:gravity="center_horizontal"
        android:layout_gravity="center"/>

显然,这个layout_gravity属性会导致不当行为。我认为,这个layout_gravity属性试图将textView定位在其父级(GridLayout)的中心,并干扰正在调整大小的列3以填充水平。