Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set a consistent style to all EditText (for e.g.)

Tags:

android

I'm trying to make all EditText's in my application have a consistent look. I'm aware that I can do something like this:

<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> 

Then I can make a particular EditText have this style by doing this:

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

But this way I have to remember to set the style individually for each and every EditText in my application which is tedious, if not error prone.

Is there some way I could make this a part of a theme or something? This is so I don't have to associate this style to every EditText. Something like this fictitious code block:

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

And then in my AndroidManifest.xml I have something like:

<application     ....     android:theme="@style/App_Theme"> 

And Voila! all my EditText's have the consistent style without me having to specify the style for each instance.

like image 603
Code Poet Avatar asked Jun 05 '12 19:06

Code Poet


2 Answers

Override the attribute pointing to the EditText style(named editTextStyle :) ) in your custom theme:

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

and make your custom style to extend 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> 

Edit:

If you're using the much newer AppCompat related themes use the editTextStyle attribute without the android prefix:

<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">         <item name="editTextStyle">@style/App_EditTextStyle</item> </style> 
like image 133
user Avatar answered Sep 20 '22 12:09

user


@Luksprog answer is correct but not working for me. After some experimentation, I found out that removing the android namespace from editTextStyle made it work for me.

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

and make your custom style to extend Widget.EditText or if using the AppCompat theme 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> 
like image 25
iflp Avatar answered Sep 20 '22 12:09

iflp