Aquí está XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LightStyle"
android:layout_width="fill_parent"
android:layout_height="55dip"
android:clickable="true"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" />
</RelativeLayout>
¿Cómo establecer style
atributo mediante programación?
Respuestas:
Técnicamente, puede aplicar estilos mediante programación, con vistas personalizadas de todos modos:
El constructor de un argumento es el que se usa cuando crea instancias de vistas mediante programación.
Así que encadena este constructor al super que toma un parámetro de estilo.
O como @Dori señaló simplemente:
fuente
http://developer.android.com/reference/android/widget/LinearLayout.html#LinearLayout(android.content.Context, android.util.AttributeSet, int)
. Con LinearLayout se requiere nivel 11+.AttributeSet
?Button
. El enfoque de @Benjamin Piette funciona bien.Lo que funcionó para mí:
Y
fuente
Actualización : en el momento de responder esta pregunta (mediados de 2012, nivel API 14-15), establecer la vista mediante programación no era una opción (a pesar de que había algunas soluciones alternativas no triviales), mientras que esto fue posible después de la API más reciente lanzamientos. Ver la respuesta de @ Blundell para más detalles.
ANTIGUA respuesta:
Todavía no puede establecer el estilo de una vista mediante programación, pero puede encontrar útil este hilo .
fuente
textView.setTextAppearance(context, R.style.mystyle);
. Según el documento "Establece el color del texto, el tamaño, el estilo, el color de las sugerencias y el color de resaltado del recurso TextAppearance especificado". developer.android.com/reference/android/widget/… , int)Para un nuevo botón / TextView:
Para una instancia existente:
Para imagen o diseños:
fuente
Si desea continuar utilizando XML (que la respuesta aceptada no le permite hacer) y establecer el estilo después de que se haya creado la vista, puede utilizar la biblioteca de París que admite un subconjunto de todos los atributos disponibles.
Como está inflando su vista desde XML, necesitará especificar una identificación en el diseño:
Luego, cuando necesite cambiar el estilo mediante programación, después de que se haya inflado el diseño:
Para más información: la lista de tipos y atributos de vista admitidos (incluye fondo, relleno, margen, etc. y puede ampliarse fácilmente) e instrucciones de instalación con documentación adicional .
Descargo de responsabilidad: soy el autor original de dicha biblioteca.
fuente
Puede aplicar un estilo a su actividad haciendo:
o Android predeterminado:
en tu actividad, antes
setContentView()
.fuente
Ninguna de las respuestas proporcionadas son correctas.
PUEDES configurar el estilo mediante programación.
La respuesta corta es echar un vistazo a http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/content/Context.java#435
Respuesta larga. Aquí está mi fragmento para establecer un estilo definido personalizado mediante programación a su vista:
1) Cree un estilo en su archivo styles.xml
No olvide definir sus atributos personalizados en el archivo attrs.xml
Mi archivo attrsl.xml:
Tenga en cuenta que puede usar cualquier nombre para su estilo (mi CustomWidget)
Ahora establezcamos el estilo del widget Programatic Aquí está mi widget simple:
diseño:
Y finalmente la implementación de la clase StyleLoader
Puede encontrar un ejemplo completamente funcional en https://github.com/Defuera/SetStylableProgramatic
fuente
apply
método que no hace nada interesante. El verdadero significado del estilo es que aplica automáticamente un estilo visual en todas las vistas agregadas dinámicamente en el futuro. Este código aquí, por supuesto, no puede hacer eso y no hay nada dinámico aquí, necesitamos saber qué Vistas y qué propiedades / campos establecer.Esta es una pregunta bastante antigua, pero la solución que funcionó para mí ahora es usar el cuarto parámetro del constructor
defStyleRes
, si está disponible ... a la vista ... para establecer el estiloLos siguientes trabajos para mis propósitos (kotlin):
fuente
Este es mi ejemplo simple, la clave es el
ContextThemeWrapper
contenedor, sin él, mi estilo no funciona, y usando el constructor de tres parámetros de la Vista.fuente
la manera simple es pasar a través del constructor
fuente
No propongo usar ContextThemeWrapper ya que hace esto:
Lo que puede generar resultados no deseados en su aplicación. En cambio, propongo una nueva biblioteca "paris" para esto de los ingenieros de Airbnb:
https://github.com/airbnb/paris
Pero después de un tiempo de usarlo, descubrí que en realidad es bastante limitado y dejé de usarlo porque no admite muchas propiedades que necesito fuera de la caja, por lo que uno debe verificar y decidir como siempre.
fuente
Usé vistas definidas en XML en mi ViewGroup compuesto, las inflé agregadas a Viewgroup. De esta manera no puedo cambiar dinámicamente el estilo, pero puedo hacer algunas personalizaciones de estilo. Mi compuesto:
}
y mi vista en xml donde puedo asignar estilos:
fuente
Puede crear el xml que contiene el diseño con el estilo deseado y luego cambiar el recurso de fondo de su vista, de esta manera .
fuente