为所有EditText设置一致的样式(例如)
我试图使我的应用程序中的所有EditText
具有一致的外观。 我知道我可以做这样的事情:
<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>
然后我可以做一个特定的EditText
有这样的风格:
<EditText ... style="@style/App_EditTextStyle ...>
但是这样我就不得不记得为我的应用程序中的每个EditText
单独设置风格,如果不是容易出错的话,那么这个风格是单调乏味的。
有什么办法可以使这个主题或东西的一部分? 这样我就不必把这个样式关联到每个EditText
。 像这样的虚拟代码块:
<style name="App_Theme" parent="@android:style/Theme.Holo"> ... <item name="android:EditTextSyle">@style/App_EditTextStyle</item> ... <style>
然后在我的AndroidManifest.xml
我有这样的东西:
<application .... android:theme="@style/App_Theme">
和瞧! 我所有的EditText
都具有一致的风格,而不必为每个实例指定样式。
覆盖自定义主题中指向EditText
样式(名为editTextStyle
:)的属性:
<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="android:editTextStyle">@style/App_EditTextStyle</item> </style>
并使您的自定义样式来扩展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>
@Luksprog答案是正确的,但不为我工作。 经过一番实验后,我发现从editTextStyle中删除android命名空间使它适用于我。
<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="editTextStyle">@style/App_EditTextStyle</item> </style>
并使您的自定义样式扩展Widget.EditText
或如果使用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>
首先,为您的EditText定义样式。 确保父级样式是android:Widget.EditText
<style name="CustomEditTextStyle" parent="android:Widget.EditText"> <item name="android:textColor">#0F0F0F</item> <!-- ... More items here if needed ... --> </style>
之后,覆盖自定义主题中的属性android:editTextStyle
。 请注意,如果您正在使用支持库,则还需要覆盖editTextStyle
属性(不包含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>
<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item> </style>