3

我正在爲Android設計一個基本的tic tac腳趾遊戲作爲我的'Hello World'項目。 我想要一個3x3的表格,所有單元格都是正方形。Android:創建方形細胞表

我做的這種方式會使列縮小,如果它的任何單元格中沒有任何內容。 我想在GridLayout中使用9個TextViews。

我歡迎所有建議來做到這一點。

我的方法是這樣的 - enter image description here

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    style="@style/LayoutStyle" 
    tools:context=".GameBoard"> 


    <GridLayout 
     style="@style/GameBoardGrid" 
     android:id="@+id/gridTitle"> 

     <TextView 
      android:id="@+id/tile00" 
      style="@style/GameTile" 
      android:layout_column="0" 
      android:layout_row="0" 
      android:text=""/> 

     <TextView 
      android:id="@+id/tile01" 
      style="@style/GameTile" 
      android:layout_column="1" 
      android:layout_row="0" 
      android:text="X"/> 

     <TextView 
      android:id="@+id/tile02" 
      style="@style/GameTile" 
      android:layout_column="2" 
      android:layout_row="0" 
      android:text="O"/> 

     <TextView 
      android:id="@+id/tile10" 
      style="@style/GameTile" 
      android:layout_column="0" 
      android:layout_row="1" 
      android:text=""/> 

     <TextView 
      android:id="@+id/tile11" 
      style="@style/GameTile" 
      android:layout_column="1" 
      android:layout_row="1" 
      android:text="O"/> 

     <TextView 
      android:id="@+id/tile12" 
      style="@style/GameTile" 
      android:layout_column="2" 
      android:layout_row="1" 
      android:text="X"/> 

     <TextView 
      android:id="@+id/tile20" 
      style="@style/GameTile" 
      android:layout_column="0" 
      android:layout_row="2" 
      android:text=""/> 

     <TextView 
      android:id="@+id/tile21" 
      style="@style/GameTile" 
      android:layout_column="1" 
      android:layout_row="2" 
      android:text="X"/> 

     <TextView 
      android:id="@+id/tile22" 
      style="@style/GameTile" 
      android:layout_column="2" 
      android:layout_row="2" 
      android:text="O"/> 

    </GridLayout> 

</RelativeLayout> 

哪裏,風格GameTile是 -

<style name="GameTile"> 
    <item name="android:textSize">60sp</item> 
    <item name="android:layout_gravity">fill</item> 
    <item name="android:gravity">center</item> 
    <item name="android:paddingLeft">@dimen/padding_grid_text</item> 
    <item name="android:paddingRight">@dimen/padding_grid_text</item> 
    <item name="android:fontFamily">Roboto-Thin</item> 
    <item name="android:background">@color/gray</item> 
    <item name="android:layout_margin">@dimen/margin_grid_cell</item> 
    <item name="android:layout_weight">1</item> 
</style> 
+0

我會建議你使用'LinearLayout'代替。發佈您的XML! –

+0

我認爲你應該有''''(空格)而不是''「'(空字符串),一切都應該沒問題。 –

+0

當我用」「取代所有」「時,它仍然會收縮2列(可能包裝空間)保持最後一列非常寬 – kalehv

回答

1

更改GridLayoutLinearLayout如下:

<TextView 
      android:id="@+id/tile00" 
      style="@style/GameTile" 
      android:text=" "/> 

    <TextView 
      android:id="@+id/tile01" 
      style="@style/GameTile" 
      android:text="X"/> 

    <TextView 
      android:id="@+id/tile02" 
      style="@style/GameTile" 
      android:text="O"/> 

</LinearLayout> 
<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/gridTitle"> 

    <TextView 
      android:id="@+id/tile10" 
      style="@style/GameTile" 
      android:text=""/> 

    <TextView 
      android:id="@+id/tile11" 
      style="@style/GameTile" 
      android:text="O"/> 

    <TextView 
      android:id="@+id/tile12" 
      style="@style/GameTile" 
      android:text="X"/> 

</LinearLayout> 
<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/gridTitle"> 

    <TextView 
      android:id="@+id/tile20" 
      style="@style/GameTile" 
      android:text=""/> 

    <TextView 
      android:id="@+id/tile21" 
      style="@style/GameTile" 
      android:text="X"/> 

    <TextView 
      android:id="@+id/tile22" 
      style="@style/GameTile" 
      android:text="O"/> 

</LinearLayout> 

而且你的風格:

<style name="GameTile"> 
    <item name="android:textSize">60sp</item> 
    <item name="android:layout_gravity">fill</item> 
    <item name="android:gravity">center</item> 
    <item name="android:paddingLeft">@dimen/padding_grid_text</item> 
    <item name="android:paddingRight">@dimen/padding_grid_text</item> 
    <item name="android:fontFamily">Roboto-Thin</item> 
    <item name="android:background">@color/gray</item> 
    <item name="android:layout_margin">@dimen/margin_grid_cell</item> 
    <item name="android:layout_weight">1</item> 
    <item name="android:layout_width">0dp</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 
+0

這是一個很好的解決方案,但我真正的問題是高度設置爲wrap_content,並且不會使其等於寬度,從而產生矩形 – kalehv

+1

我明白了。對於這種情況,最好的方法是使用'dp'值來固定佈局的高度和寬度。 –

+0

是的。我想這是現​​在唯一的選擇。謝謝您的幫助。欣賞它。 – kalehv