如何使 textViews 填充行宽?
How to make textViews fill a row width?
我正在准备井字游戏:
最初所有 9 个单元格都是 empty.Upon 开始游戏,因为我输入数字,单元格的宽度改变 dynamically.How 以防止出现这种情况?
我的 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 :我不想使用 Table 布局、水平和垂直线性布局集或任何其他视图。请告诉我如何在 GridLayout 中完成它。
请看答案。您只需要在每个 TextView 上更改以下部分:
android:layout_width="0dp"
在每个 TextView
中,将 layout_width
设置为 0dp。最初,TextView
将是 0 像素大,但它们将同样填充剩余的 space 作为结果:android:layout_columnWeight="1"
.
您需要为行的每一列设置固定权重。
为此,在本例中,您必须在每个组件中分配 Textview,
他们将在行中拥有的 pes。如果您的行将有 2 个组件,您可以在 weight_sum = "1"
中分配权重总和的值,然后在每个组件中分配您将拥有的权重,如果您希望它们相等,例如您会 layout_weight = 0.5
。因此,通过这种方式,您可以固定容器内的每个组件宽度。
希望对您有所帮助。
您的代码:
<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"
weight_sum="3"
android:padding="10dp"
android:theme="@style/MyTextViewStyle">
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_weight="1"
android:layout_rowWeight="1"
tools:text="1" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_weight="1"
android:layout_rowWeight="1"
tools:text="2" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_weight="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>
我看你用过android:layout_columnWeight="1"
,也用过android:layout_width="wrap_content"
。正如这个 post 中提到的,在 GridLayout 中不需要使用 layout_width 参数,因此应该避免。
尝试将 layout_width 和 layout_height 设置为任何固定值,例如 10 dp,然后 android 宁愿使用 Layout_columnWeight 并为每个文本视图分配相等的部分。另外,请阅读此 以允许向后兼容 layout_width。
我正在准备井字游戏: 最初所有 9 个单元格都是 empty.Upon 开始游戏,因为我输入数字,单元格的宽度改变 dynamically.How 以防止出现这种情况?
我的 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 :我不想使用 Table 布局、水平和垂直线性布局集或任何其他视图。请告诉我如何在 GridLayout 中完成它。
请看答案
android:layout_width="0dp"
在每个 TextView
中,将 layout_width
设置为 0dp。最初,TextView
将是 0 像素大,但它们将同样填充剩余的 space 作为结果:android:layout_columnWeight="1"
.
您需要为行的每一列设置固定权重。
为此,在本例中,您必须在每个组件中分配 Textview,
他们将在行中拥有的 pes。如果您的行将有 2 个组件,您可以在 weight_sum = "1"
中分配权重总和的值,然后在每个组件中分配您将拥有的权重,如果您希望它们相等,例如您会 layout_weight = 0.5
。因此,通过这种方式,您可以固定容器内的每个组件宽度。
希望对您有所帮助。
您的代码:
<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" weight_sum="3" android:padding="10dp" android:theme="@style/MyTextViewStyle"> <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_weight="1" android:layout_rowWeight="1" tools:text="1" /> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_weight="1" android:layout_rowWeight="1" tools:text="2" /> <TextView android:id="@+id/textView3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_weight="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>
我看你用过android:layout_columnWeight="1"
,也用过android:layout_width="wrap_content"
。正如这个 post 中提到的,在 GridLayout 中不需要使用 layout_width 参数,因此应该避免。
尝试将 layout_width 和 layout_height 设置为任何固定值,例如 10 dp,然后 android 宁愿使用 Layout_columnWeight 并为每个文本视图分配相等的部分。另外,请阅读此