在android中运行时更改GridLayout行/列计数

时间:2013-02-25 18:35:37

标签: java android user-interface android-gridlayout

我是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>

然后,我在我的activity的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的好习惯就像我上面描述的那样。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您需要执行gridLayout.removeAllChildren()。

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

答案 1 :(得分:0)

今天,我找到了解决这个问题的方法。

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

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