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]」を使用してボタンをレイアウトに追加し、末尾の 2 つのパラメーターでボタンのサイズをビューに伝えます。

もう一つの例:

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 に答える