Android 如何约束GridLayout的宽度小于父级的宽度?

Android 如何约束GridLayout的宽度小于父级的宽度?,android,layout,grid-layout,Android,Layout,Grid Layout,我在XML布局文件中定义了一个GridLayout,如下所示: <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="4" android:useDefaultMargins="true" > <Button android:text="ababababababababab

我在XML布局文件中定义了一个GridLayout,如下所示:

    <GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="4"
    android:useDefaultMargins="true" >

    <Button android:text="ababababababababababababababababababababab" />
    <Button android:text="ababababababababababababababababababababab" />
    <Button android:text="ababababababababababababababababababababab" />
    </GridLayout>
因为宽度是match_parent,所以我希望GridLayout安排按钮,以便每行只显示所需数量的按钮,以保持行的宽度小于父行的宽度

然而,这不是我看到的结果。三个按钮都显示在第一行中,超出父按钮的宽度,如下图所示。实现我想要的输出的方法是什么

网格布局是一项要求吗?不如改用线性布局,让每个视图的权重相等

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <Button
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="ababababababababababababababababababababab" />

                    <Button
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="ababababababababababababababababababababab" />

                    <Button
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="ababababababababababababababababababababab" />
                </LinearLayout>

GridLayout承诺,如果一行中没有剩余的空间,那么子视图将在各行之间回流。我有一个要在网格中显示的动态生成视图列表。我不认为这两个选项会得到这样的结果。那么你不应该使用GridView吗?GridView不提供在特定列中具有不同宽度的灵活性。你可以在布局中包装按钮,并在该布局/列中调整按钮的宽度。注意:当你想使按钮比列小时,这会有所帮助。如果希望按钮跨越两列或更多列,该怎么办?
            <TableLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TableRow>
                    <Button android:text="ababababababababababababababababababababab" />
                    <Button android:text="ababababababababababababababababababababab" />
                    <Button android:text="ababababababababababababababababababababab" />
                </TableRow>
            </TableLayout>