Estoy tratando de que todos EditText
los elementos de mi aplicación tengan un aspecto coherente. Soy consciente de que puedo hacer algo como esto:
<style name="App_EditTextStyle">
<item name="android:background">@drawable/filled_roundededges_box_dark</item>
<item name="android:textColor">#808080</item>
<item name="android:layout_height">45dip</item>
</style>
Entonces puedo hacer que un particular EditText
tenga este estilo haciendo esto:
<EditText ...
style="@style/App_EditTextStyle
...>
Pero de esta manera tengo que recordar establecer el estilo individualmente para todos y cada uno EditText
en mi aplicación, lo cual es tedioso, si no propenso a errores.
¿Hay alguna forma de que pueda hacer que esto sea parte de un tema o algo así? Esto es para que no tenga que asociar este estilo a todos EditText
. Algo como este bloque de código ficticio:
<style name="App_Theme" parent="@android:style/Theme.Holo">
...
<item name="android:EditTextSyle">@style/App_EditTextStyle</item>
...
<style>
Y luego en mi AndroidManifest.xml
tengo algo como:
<application
....
android:theme="@style/App_Theme">
¡Y voilá! todos mis EditText
tienen el estilo consistente sin que yo tenga que especificar el estilo para cada instancia.
layout_height/height
no se pueden poner allí porque Android probablemente verifica esos atributos antes que los estilos del tema y se quejará de que faltan. Pero un dibujo personalizado + un color de texto diferente funciona con lo anterior.edittextStyle
no se aplica a unAutoCompleTextView
(aunque es unEditText
). Eche un vistazo alautoCompleteTextViewStyle
atributo en theme.xml que apunta a unWidget.AutoCompleTextView
estilo en el archivo style.xml.<item name="android:editTextStyle">
a<item name="editTextStyle">
, está bien. ¡Gracias!La respuesta de @Luksprog es correcta pero no funciona para mí. Después de un poco de experimentación, descubrí que eliminar el espacio de nombres de Android de editTextStyle lo hizo funcionar para mí.
<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="editTextStyle">@style/App_EditTextStyle</item> </style>
y haga su estilo personalizado para extender
Widget.EditText
o si usa el tema AppCompatWidget.AppCompat.EditText
:<style name="App_EditTextStyle" parent="@android:style/Widget.EditText"> <item name="android:background">@drawable/filled_roundededges_box_dark</item> <item name="android:textColor">#808080</item> <item name="android:layout_height">45dip</item> </style>
fuente
AppCompat
biblioteca. ¿Tu actividad se extiendeAppCompatActivity
? Oh, los misterios del desarrollo de Android.AppCompat v7:21+
, los atributos estándar del tema deben usarse sin el prefijo "android:" en los estilos.Primero, defina el estilo para su EditText. Asegúrese de que el estilo principal sea
android:Widget.EditText
<style name="CustomEditTextStyle" parent="android:Widget.EditText"> <item name="android:textColor">#0F0F0F</item> <!-- ... More items here if needed ... --> </style>
Después de eso, anule el atributo
android:editTextStyle
en su tema personalizado. Tenga en cuenta que si está utilizando la biblioteca de soporte, también deberá anular el atributoeditTextStyle
(sin el espacio de nombres de Android).<style name="App_Theme" parent="..."> <item name="android:editTextStyle">@style/CustomEditTextStyle</item> <item name="editTextStyle">@style/CustomEditTextStyle</item> <!-- For compatibility with the support library --> </style>
fuente
Si solo necesita establecer algunos parámetros simples, como el color del texto, el espacio de nombres de Android tiene algunos parámetros que lo harán sin la necesidad de declarar un estilo separado para el texto de edición. P.ej
<style name="MyStyle" parent="android:Theme.Material.NoActionBar"> <item name="colorPrimary">@color/black</item> <item name="colorPrimaryDark">@color/white</item> <item name="colorAccent">@color/white</item> <item name="android:textColor">@color/black</item> <item name="android:editTextColor">@color/black</item> <item name="android:editTextBackground">@color/black</item> .... </style>
fuente
editTextColor
y elimineandroid:
.<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item> </style>
fuente