Estoy tratando de que todos EditTextlos 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 EditTexttenga 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.xmltengo algo como:
<application
....
android:theme="@style/App_Theme">
¡Y voilá! todos mis EditTexttienen el estilo consistente sin que yo tenga que especificar el estilo para cada instancia.

layout_height/heightno 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.edittextStyleno se aplica a unAutoCompleTextView(aunque es unEditText). Eche un vistazo alautoCompleteTextViewStyleatributo en theme.xml que apunta a unWidget.AutoCompleTextViewestilo 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.EditTexto 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
AppCompatbiblioteca. ¿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:editTextStyleen 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
editTextColory elimineandroid:.<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item> </style>fuente