2011-11-14 18 views
5

Estoy intentando añadir un montón de botones para un diseño de la siguiente manera:Cómo establecer los parámetros de un botón mediante programación

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

Mi problema es cómo puedo hacer esto mediante programación a todos los botones:

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

He estado buscando en LayoutParams pero no parece completo. ¿Cómo configuro textSize en 32 dip?

Respuesta

13

Establecer sus atributos usando el siguiente código:

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

Si desea especificar el texto utilizan unidades de tamaño:

button.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 32); 
+0

Aunque estoy teniendo problemas con la gravedad. setGravity (Gravity.CENTER_HORIZONTAL) no hace lo mismo que android: layout_gravity = "center_horizontal" en el archivo xml. El botón del archivo xml está centrado, pero no los creados con setGravity(). – Espen

+0

Pruebe esto con los parámetros de diseño: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL); – dymmeh

+0

O después de inicializar la llamada de parámetros: params.gravity = Gravity.CENTER_HORIZONTAL; – dymmeh

3

Use LayoutParams de la altura, la anchura y la gravedad con

LinearLayout.LayoutParams (int width, int height) 

donde se puede utilizar WRAP_CONTENT de los enteros.

Luego están Button.setGravity() y Button.setTextSize() para los dos últimos.

Espero que esto ayude.

+0

¿Cómo puedo especifique inmersión utilizando Button.setTextSize()? – Espen

+0

public void setTextSize (int unit, float size); donde la unidad es "COMPLEX_UNIT_DIP" y el tamaño = el tamaño del texto. –

0

Utilizará un objeto LayoutParams para la configuración de diseño, y para establecer el tamaño de texto use setTextSize() de la clase Button.

Puede establecer la gravedad con setGravity() también.

0

TextSize no está dentro de los parámetros de diseño. Para establecer TEXTSIZE tienes que

button.setTextSize(32); 
4

LayoutParams se relaciona con el padre ViewGroup que contendrá la vista. Entonces, en su caso, es un LinearLayout, por lo que necesita crear parámetros para ese. Esto es lo que estoy hablando:

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); 
Cuestiones relacionadas