2014-11-12 8 views
0

программно Я пытаюсь сделать кнопку в 100х100 пикселей и добавить его в GridLayout на позиции 3,3Android: Установка размера кнопки

Button btn = new Button(this); 
btn.setLayoutParams(new ViewGroup.LayoutParams(100,100)); 
GridLayout grid4x4 = (GridLayout)findViewById(R.id.grid4x4); 

//I've narrowed it down to the conclusion that this line is the problem: 
grid4x4.addView(btn,new GridLayout.LayoutParams(GridLayout.spec(3),GridLayout.spec(3))); 
//if i just use: 
//grid4x4.addView(btn); I get the button the size I want it, but I need it to be on 
//the 3,3 position of the grid. 

Это «почти» работает, за исключением того, что добавленная кнопка больше, чем 100x100px, поскольку вы можете видеть, что я пытаюсь исправить размер, который я хочу по какой-то причине, это не тот размер, который я получаю.

ответ

0

Это не может быть идеальным решением, но это работает именно так, как я хотел:

Button btn = new Button(this); 
btn.setLayoutParams(new ViewGroup.LayoutParams(100,100)); 
GridLayout grid4x4 = (GridLayout)findViewById(R.id.grid4x4); 
grid4x4.addView(btn); 
((GridLayout.LayoutParams) btn.getLayoutParams()).rowSpec = GridLayout.spec(3); 
((GridLayout.LayoutParams) btn.getLayoutParams()).columnSpec = GridLayout.spec(3); 

Oim ~

0

в вашем res/values/dimens.xml добавить <dimen name="mybuttonsize">100px</dimen>

int size = (int) getResources().getDimension(R.dimen.mybuttonsize); 

изменить код на:

btn.setMaxWidth(size); 
btn.setMaxHeight(size); 
btn.setLayoutParams(new ViewGroup.LayoutParams(size,size)); 
+0

Точно такой же результат, согласно документации, публичный конструктор LayoutParams уже принимает int как px, поэтому даже когда я ожидал, что это будет то же самое, что я пробовал, и это дало мне те же результаты. –

+0

использовать dp вместо px! прочитайте это http://stackoverflow.com/a/2025541/4224337 – Rami

+0

, если я использую 100dp в xml, кнопка становится больше, но если я устанавливаю ее на 50dp, которая будет эквивалентна 100px (на экране im test) он все еще не работает. Я знаю, что это может быть кнопка 100x100 px, потому что у меня уже есть еще один, который не добавлен программно. Tht правильно показывает, как я хочу. –

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