我是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的好习惯就像我上面描述的那样。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您需要执行gridLayout.removeAllChildren()。
Invalidate是一种让View系统知道View的内容已经改变并且需要重新绘制的方法。
答案 1 :(得分:0)
今天,我找到了解决这个问题的方法。
在xml文件中,我将GridLayout替换为LinearLayout,并将girdlayout动态添加为linearlayout的子项。现在可以在按钮单击事件处理程序中更改行/列计数。
我不确定这是否是一个很好的方法,并且会出现任何性能损失。