3

我是android开发的新手。我正在尝试使用 GridLayout 来完成我的 UI 设计。

这是场景:

我在 xml 文件中定义了一个 GridLayout 如下

<GridLayout
    android:id="@+id/gridLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/linearLayoutBottomLeft"
    android:layout_alignParentLeft="true"
    android:layout_below="@id/linearLayoutTopLeft"
    android:layout_toLeftOf="@id/textView" >
</GridLayout>

然后,我在我的活动的 onCreate() 方法中设置它,如下所示:

GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);
gridLayout.invalidate();
int rowNumber = 4;
int colNumber = 4;
gridLayout.setRowCount(rowNumber);
gridLayout.setColumnCount(colNumber);

到目前为止一切顺利,一切正常。但是,我那里也有一些按钮。在按钮的单击事件中,我更改了 rowNumber 和 colNumber,在运行时设置它们。我认为它会导致一些错误...

所以我的问题是是否可以在运行时为gridLayout设置行号和列号。

如果这在 android 中是不允许的,那么实现我上面描述的 GUI 的好习惯是什么。

任何帮助,将不胜感激。

4

2 回答 2

1

您需要执行 gridLayout.removeAllChildren()。

Invalidate 是一种让 View 系统知道 View 的内容已经改变并且需要重新绘制的方法。

于 2014-12-05T21:10:39.200 回答
0

今天,我想出了一些方法来解决这个问题。

在 xml 文件中,我将 GridLayout 替换为 LinearLayout,并将 girdlayout 动态添加为 linearlayout 的子级。现在可以在按钮单击事件处理程序中更改行/列数。

我不确定这是否是一种好方法,并且会出现任何性能损失。

于 2013-02-27T19:04:39.800 回答