为所有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>