1

我正在尝试动态更改按钮大小,但使用后setWidth()setHeight()没有任何反应。

这是我的代码...

GridLayout grid = (GridLayout)findViewById(R.id.grid);
grid.setColumnCount(10);
grid.setRowCount(10);
cells = new Button[100];
for (int i = 0; i < cells.length; i++) { 
    cells[i] = new Button(this);
    cells[i].setWidth(grid.getWidth()/10);
    cells[i].setHeight(grid.getHeight()/10);
    grid.addView(cells[i]);
}

有什么想法/解决方案吗?

4

3 回答 3

3

LayoutParams 应该解决这个问题:

这是从另一个stackOverflow帖子中获取的如何工作的示例:

ViewGroup.LayoutParams params = myButton.getLayoutParams(); 
params.width = 400;    
myButton.setLayoutParams(params); 
于 2012-06-20T23:13:51.020 回答
1

这是我自己想出来的,很简单,忽略它我觉得很愚蠢。

grid.addView(cells[i], display.getWidth()/grid.getColumnCount(), display.getWidth()/grid.getColumnCount());

在这行代码中,我使用“cells[i]”将按钮添加到布局中,而后面的两个参数告诉视图我想要按钮的大小。

另一个例子:

addView(myButton, 100, 200);

在 addView 上方添加了宽度为 100 像素、高度为 200 像素的 myButton。

于 2012-06-21T15:14:50.090 回答
0

也许尝试调用invalidate方法。如果视图可见,onDraw(android.graphics.Canvas)将在将来的某个时间点调用。这必须从 UI 线程调用。要从非 UI 线程调用,请调用postInvalidate().

来源:http: //developer.android.com/reference/android/view/View.html#invalidate%28%29

于 2012-06-20T23:15:29.477 回答