如何使textViews填充行宽?

时间:2017-12-29 14:24:57

标签: android android-gridlayout

我正在准备一个tic tac游戏: 最初所有9个单元格都是空的。当我输入数字时开始游戏,单元格的宽度会动态变化。如何防止这种情况?

width of Last column becomes equal spaced as i enter a number in third column

我的xml代码为9个单元格:

<GridLayout
    android:id="@+id/grid_layout_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginHorizontal="20dp"
    android:background="@android:color/holo_red_dark"
    android:rowCount="3"
    android:columnCount="3"
    android:padding="10dp"
    android:theme="@style/MyTextViewStyle">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="4" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="5" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="7" />

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="8" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        tools:text="" />

</GridLayout>

PS:我不想使用表格布局,水平和垂直线性布局集或任何其他视图。请告诉我如何在GridLayout本身中完成它。

4 个答案:

答案 0 :(得分:0)

请参阅答案here。您只需要在每个TextView上更改以下部分:

android:layout_width="0dp"

答案 1 :(得分:0)

在每个TextView中,将layout_width设置为0dp。最初,TextView将为0像素大,但它们将同等地填充剩余空间:android:layout_columnWeight="1"

答案 2 :(得分:0)

您需要在行的每一列上放置一个固定的重量。 为此,您必须在每种组件中分配Textview, 他们将要排在队中。如果你的行将包含2个组件,你可以在weight_sum = "1"中分配权重总和的值,然后在每个组件中指定你想要它们的权重,例如你可以,{ {1}}。因此,您可以修复容器内的每个组件宽度。

我希望这对你有所帮助。

您的密码:

layout_weight = 0.5

答案 3 :(得分:0)

我可以看到您使用了android:layout_columnWeight="1"但也使用了android:layout_width="wrap_content"。正如本post中所提到的,不需要在GridLayout中使用layout_width参数,因此应该避免使用。

尝试将layout_width和layout_height设置为任何固定值,例如10 dp,然后android宁愿使用Layout_columnWeight并为每个textview分配相等的部分。另外,请阅读此post以允许layout_width的向后兼容性。