2013-11-04 24 views
0

我正在關注GridLayout上的這個教程http://blog.stylingandroid.com/archives/669。我實現的代碼如下:GridLayout怪異行爲

<?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

注意,當您從

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

顯然刪除

layout_gravity =「中心」這個「變」不會發生,這layout_gravity屬性導致的不當行爲。我認爲,這個layout_gravity屬性試圖將textView放置在其父級(GridLayout)的中心,並干擾被調整大小的第3列以填充水平。