Tengo un estilo llamado Rojo y Verde y tengo una declaración if para saber cuál presentar, pero no conozco el código para aplicar realmente un estilo del java.¿Cómo aplico un estilo programáticamente?
Respuesta
Descubrí que esto solo se puede hacer cuando se crea una Vista desde el interior de Java. Si está definido en el XML de antemano, no puede cambiar dinámicamente el estilo.
¿Cómo responde esto su propia pregunta? –
Es posible aplicar estilos programáticamente a TextViews usando setTextAppearance (context, resid) método. (El resId del estilo se puede encontrar en R.style.YourStyleName)
No hay una solución de línea para este problema, pero esto funcionó para mi caso de uso. El problema es que el constructor 'Ver (context, attrs, defStyle)' no se refiere a un estilo real, sino que quiere un atributo. Por lo tanto, nosotros:
- Definir un atributo
- crear un estilo que desea utilizar
- Aplicar un estilo para ese atributo en nuestro tema
- crear nuevas instancias de nuestra visión con ese atributo
En 'res/valores/attrs.xml', definir un nuevo atributo:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="customTextViewStyle" format="reference"/>
...
</resources>
En res/valores/styles.xml 'Voy a crear el estilo que quiero usar en mi TextView encargo
<style name="CustomTextView">
<item name="android:textSize">18sp</item>
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">14dp</item>
</style>
En 'res/valores/themes.xml' o' res/valores/styles.xml', modificar el tema para su aplicación/actividad y añadir el siguiente estilo:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
<item name="@attr/customTextViewStyle">@style/CustomTextView</item>
</style>
...
</resources>
por último, en su Vista de Texto personalizado, puede ahora utilizar el constructor con el atributo y recibirá su estilo. Aquí, en lugar de estar siempre
public class CustomTextView extends TextView {
public CustomTextView(Context context, int styleAttribute) {
super(context, null, styleAttribute);
}
// You could also just apply your default style if none is given
public CustomTextView(Context context) {
super(context, null, R.attr.customTextViewStyle);
}
}
Con todos estos componentes, ahora se puede hacer una sentencia if/else para generar nuevos puntos de vista en tiempo de ejecución con el estilo que prefiera
CustomTextView ctv;
if(useCustomStyles == true){
ctv = new CustomTextView(context, R.attr.customTextViewStyle);
}else{
ctv = new CustomTextView(context, R.attr.someOtherStyle);
}
Vale la pena señalar que repetidamente usó customTextView en diferentes variantes y lugares diferentes, pero de ninguna manera se requiere que el nombre de la vista coincida con el estilo o el atributo ni nada. Además, esta técnica debería funcionar con cualquier vista personalizada, no solo con TextViews.
Para mí el uso de '
poner este código
super.setStyle(R.style.yourownstyle)
antes setContentView() en onCreate
- 1. ¿Cómo aplico programáticamente un filtro de entrada Drupal?
- 2. ¿Cómo aplico un estilo a ListViewItems en WPF?
- 3. ¿Cómo aplico un estilo dinámico en el código en tiempo de ejecución?
- 4. Cómo aplico VCLStyle para TLinkLabel
- 5. Establezca el margen en el estilo y aplique ese estilo a TextView programáticamente
- 6. Aplicación de recurso de estilo programáticamente
- 7. ¿Cómo aplico globalmente un XmlAdapter a un programa JAXB?
- 8. ¿Cómo aplico un símbolo como una función en Scheme?
- 9. ¿Cómo aplico un DCT a una imagen en Python?
- 10. ¿Cómo aplico una función multiparamétrica en R?
- 11. ¿Cómo eliminar un estilo?
- 12. ¿Cómo aplico estilos CSS a los objetos Raphael.js usando jQuery?
- 13. ¿Cómo editas un .png programáticamente?
- 14. ¿Cómo crear un UIScrollView programáticamente?
- 15. Cómo dibujar un triángulo programáticamente
- 16. ¿Cómo creo un UIViewController programáticamente?
- 17. ¿Cómo configura programáticamente un atributo?
- 18. Desactivar programáticamente Android: estilo WindowActionBarOverlay de la barra de acciones
- 19. Cuenta programáticamente número de caracteres/palabras/párrafos con un estilo específico en un documento DOCX
- 20. ¿Cómo extiendo el estilo de un botón?
- 21. ¿Cómo obtengo un estilo calculado?
- 22. ¿Cómo aplico plantillas a cada nodo seleccionado en un for-each?
- 23. ¿Cómo aplico jquery-ui a una vista de Backbone.js?
- 24. ¿Cómo aplico una clase CSS a Html.ActionLink en ASP.NET MVC?
- 25. ¿Cómo aplico la inyección de dependencia a una fábrica abstracta
- 26. ¿Cómo aplico la validación de formularios web en drupal 7?
- 27. ¿Cómo aplico "o" a una lista en elisp
- 28. ¿Cómo aplico el tema de Android HoloEverywhere cuando uso ActionBarSherlock?
- 29. Clojure: ¿Cómo aplico una función a un subconjunto de las entradas en un hash-map?
- 30. En mercurial, ¿cómo aplico un parche invertido a un archivo en particular?
duplicado exacto: http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute- en-una-vista, http://stackoverflow.com/questions/3246447/how-to-set-the-style-attribute-programmatically-in-android, etc. Por favor, busque antes de preguntar –
este enlace. http://www.anddev.org/view-layout-resource-problems-f27/how-to-programmatically-set-button-style-t8656.html esto debería ayudar –