Android:创建方形单元格表

Android:创建方形单元格表,android,textview,android-ui,android-tablelayout,android-gridlayout,Android,Textview,Android Ui,Android Tablelayout,Android Gridlayout,我正在为android设计一款基本的井字游戏,作为我的“Hello World”项目。 我想要一张3x3表格,所有单元格都是正方形 如果列中的任何单元格中没有任何内容,我所做的操作会使列收缩。 我正在尝试在GridLayout中使用9个文本视图 我欢迎所有这样做的建议 我的方式是这样的- 其中,GameTile的样式为- <style name="GameTile"> <item name="android:textSize">60sp</item&g

我正在为android设计一款基本的井字游戏,作为我的“Hello World”项目。 我想要一张3x3表格,所有单元格都是正方形

如果列中的任何单元格中没有任何内容,我所做的操作会使列收缩。 我正在尝试在GridLayout中使用9个文本视图

我欢迎所有这样做的建议

我的方式是这样的-


其中,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>

60便士
填满
居中
@尺寸/填充\网格\文本
@尺寸/填充\网格\文本
机器人瘦
@颜色/灰色
@尺寸/边距网格单元
1.

网格布局更改为
线性布局
,如下所示:

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

60便士
填满
居中
@尺寸/填充\网格\文本
@尺寸/填充\网格\文本
机器人瘦
@颜色/灰色
@尺寸/边距网格单元
1.
0dp
包装内容

我建议您改用
线性布局。发布您的XML!我认为您应该使用
(空格)而不是
(空字符串),而且一切都应该很好。这没有帮助,当我将所有“”替换为“”时,它仍然会收缩前2列(可能是包装空格)保持最后一列相当宽这是一个很好的解决方案,但我真正的问题是高度设置为包裹内容,而这并不使其等于宽度,因此我看到一个矩形。对于这种情况,最好是使用
dp
值固定布局的高度和宽度。是的。我想这是现在唯一的选择。谢谢你的帮助。谢谢。
<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>