2012-06-20 7 views
1

Я пытаюсь изменить размер кнопки динамически, но после использования setWidth() и setHeight() ничего не происходит.Как изменить размер кнопки в Android?

Это мой код ...

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]); 
} 

Любые идеи/решения?

ответ

1

Я понял это, на мой собственный, и это было очень просто, я чувствую себя глупо с видом его.

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

В этой строке кода добавить кнопки в макет с «клетки [я]» хвостовая два параметра говорят мнение, какой размер я хочу кнопку, чтобы быть.

Другой пример:

addView(myButton, 100, 200); 

Над addView добавляет MyButton с шириной 100 пикселей на 200 пикселей высотой.

+0

Вы можете принять свой собственный ответ, если вы это выяснили. – Windle

3

LayoutParams должен решить вопрос:

Это в качестве примера того, как он должен работать взят из другого поста StackOverflow:

ViewGroup.LayoutParams params = myButton.getLayoutParams(); 
params.width = 400;  
myButton.setLayoutParams(params); 
0

Может попытаться вызвать invalidate метод. Если вид виден, в какой-то момент в будущем будет вызываться onDraw(android.graphics.Canvas). Это должно вызываться из потока пользовательского интерфейса. Для вызова из потока, отличного от UI, вызовите postInvalidate().

Источник: http://developer.android.com/reference/android/view/View.html#invalidate%28%29

Смежные вопросы