Как установить параметры кнопки программно - PullRequest
7 голосов
/ 15 ноября 2011

Я пытаюсь добавить несколько кнопок в макет, например:

for( int i = 0; i < 10; i++ ) {
    Button button = new Button( this );
    button.setText( "" + i );
    ( ( LinearLayout )dialog.findViewById( R.id.Buttons ) ).addView( button );
}

Моя проблема заключается в том, как сделать это программно для всех кнопок:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:textSize="32dip" />

Я смотрю на LayoutParams, но он не выглядит полным.Например, как установить textSize на 32 dip?

Ответы [ 5 ]

17 голосов
/ 15 ноября 2011

Установите свои атрибуты, используя следующий код:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);
button.setLayoutParams(params);
button.setGravity(Gravity.CENTER_HORIZONTAL);
button.setTextSize(32);

Если вы хотите указать единицы размера текста, используйте:

button.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 32);
4 голосов
/ 15 ноября 2011

LayoutParams относится к родительскому элементу ViewGroup, который будет содержать представление. Так что в вашем случае это LinearLayout, поэтому вам нужно создать параметры для этого. Вот о чем я говорю:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.weight = 1f;

Button button = new Button(this);
button.setLayoutParams(lp);
button.setText("" + i);
((LinearLayout)dialog.findViewById(R.id.Buttons)).addView(button);
3 голосов
/ 15 ноября 2011

Используйте LayoutParams для высоты, ширины и гравитации с

LinearLayout.LayoutParams (int width, int height)

, где вы можете использовать WRAP_CONTENT для целых.

Тогда есть Button.setGravity() и Button.setTextSize() дляпоследние два.

Надеюсь, это поможет.

0 голосов
/ 15 ноября 2011

TextSize не находится внутри параметров макета. Чтобы установить textSize, вы должны

button.setTextSize(32);
0 голосов
/ 15 ноября 2011

Вы бы использовали объект LayoutParams для настройки макета, а для установки размера текста используйте setTextSize () из класса Button.

Вы можете установитьсила тяжести с setGravity () тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...