我认为您的布局行为一切正常。
放置在Horizo ntalScrollView内的GridLayout的android:layout_width="match_parent"
设置无效。插入GridLayout的单个子视图确定GridLayout 的实际宽度(如果您使用垂直ScrollView容器,则为高度),该宽度可能大于父屏幕的宽度(因此width=match_parent设置在这里无效;也适用于子视图)。GridLayout的列和行具有插入的最大子视图的大小(为此列/行分配)。
这整体是一个非常动态的结构。列数和行数会自动重新计算。请记住使用layout_row和layout_column标记子视图,并可能设置所需的大小 - 遵循上述规则,例如:
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="text"
android:id="@+id/editText1"
android:layout_row="2"
android:layout_column="8" />
因此,通过更改子视图的宽度,您可以控制 GridLayout 的列宽度。您可以研究以下示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:background="#f3f3f3">
<GridLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#a3ffa3">
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Col 1,Row4"
android:id="@+id/button"
android:layout_gravity="center"
android:layout_row="4"
android:layout_column="1" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start.."
android:layout_column="4"
android:layout_row="8" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Col 6, Row 1."
android:id="@+id/button2"
android:layout_row="1"
android:layout_column="6" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Col 6, Row 2."
android:id="@+id/button3"
android:layout_row="2"
android:layout_column="6" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button4"
android:layout_gravity="center"
android:layout_column="9"
android:layout_row="3" />
<TextView
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_row="3"
android:layout_column="8" />
<CheckBox
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="New CheckBox"
android:id="@+id/checkBox"
android:layout_row="6"
android:layout_column="7"
android:textColor="#212995" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/editText"
android:layout_row="5"
android:layout_column="8"
android:textColor="#952a30" />
</GridLayout>
</HorizontalScrollView>
</LinearLayout>
我希望这可以帮到你。此致 :)
另外:
我发现以上内容实际上可能很难以编程方式实现。您可能正在考虑将 GridLayout 更改为更易于处理的 GridView 或 TableLayout。要了解更多信息,请查看以下网站:
- GridLayout.LayoutParams
- 网格布局
- gridlayout-not-gridview-how-to-stretch-all-children-evenly