我正在关注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>
哪个产生这个网格:
如果我理解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"/>
生产:
那么发生了什么改变事情?
答案 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以填充水平。