Pregunta Establezca un estilo consistente para todos EditText (por ejemplo)


Estoy tratando de hacer todo EditTextEn mi aplicación tengo una apariencia consistente. 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 un particular EditText tener este estilo al hacer esto:

<EditText ...
    style="@style/App_EditTextStyle
    ...>

Pero de esta manera tengo que recordar establecer el estilo individualmente para cada uno EditText en mi aplicación, que es tedioso, si no propenso a errores.

¿Hay alguna forma en que pueda hacer que esto sea parte de un tema o algo así? Esto es así, así que no tengo que asociar este estilo a cada EditText. Algo así 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á! toda mi EditTexttienen el estilo consistente sin que yo tenga que especificar el estilo para cada instancia.


73
2018-06-05 19:28


origen


Respuestas:


Anular el atributo que apunta al EditText estilo (nombrado editTextStyle :)) en tu tema personalizado:

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>

y haz que tu estilo personalizado se extienda Widget.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>

130
2018-06-05 20:09



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 haz que tu estilo personalizado se extienda Widget.EditText o si usa el tema de AppCompat Widget.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>

39
2017-12-23 05:03



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, anula el atributo android:editTextStyle en tu tema personalizado Tenga en cuenta que, si está utilizando la biblioteca de soporte, también deberá anular el atributo editTextStyle (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>

17
2018-04-15 18:42



<style name="App_Theme" parent="@android:style/Theme.Holo">    
    <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item>
</style>

-1
2017-09-16 09:40