En tiempo de ejecución, ya sabes qué estilo quieres que tenga tu botón. Entonces, de antemano, en xml en la carpeta de diseño, puede tener todos los botones listos para usar con los estilos que necesita. Por lo tanto, en la carpeta de diseño, es posible que tenga un archivo llamado: button_style_1.xml. El contenido de dicho archivo podría ser como:
<?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/styleOneButton"
style="@style/FirstStyle" />
Si está trabajando con fragmentos, a continuación, en onCreateView se infla ese botón, como:
Button firstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
donde contenedor es el contenedor ViewGroup asociado con el onCreateView método que anula al crear su fragmento.
¿Necesita dos botones más? Se les crea de esta manera:
Button secondFirstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
Button thirdFirstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
puede personalizar dichos botones:
secondFirstStyleBtn.setText("My Second");
thirdFirstStyleBtn.setText("My Third");
Luego se agregan los, botones estilizados personalizadas al esquema del contenedor también se infla en el método onCreateView:
_stylizedButtonsContainer = (LinearLayout) rootView.findViewById(R.id.stylizedButtonsContainer);
_stylizedButtonsContainer.addView(firstStyleBtn);
_stylizedButtonsContainer.addView(secondFirstStyleBtn);
_stylizedButtonsContainer.addView(thirdFirstStyleBtn);
Y así es como puede trabajar dinámicamente con botones estilizados.
Mi problema es que cargo datos de un servicio web que describe la información de mi botón. Los botones deben tener un estilo diferente según la categoría a la que pertenecen. Es por eso que me gustaría establecer el estilo de forma dinámica. –
Bueno, no puedes cambiar el atributo 'style' de Android, pero puedes establecer programáticamente el fondo de un' Botón' como lo haces con cualquier otra vista, si eso es suficiente. Además, como un 'Botón' hereda de' TextView', puede cambiar las propiedades del texto. Solo mire la documentación de API para estos artículos ... http://developer.android.com/reference/android/view/View.html#setBackgroundResource%28int%29 –
Estaba pensando en hacer eso, justo antes de comprobar si Tenía nuevas respuestas. Muchas gracias. –