我试图让我的应用程序中的所有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
都具有一致的样式,而不必为每个实例指定样式。
发布于 2012-06-06 04:09:28
覆盖自定义主题中指向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>
编辑:
如果你使用更新的android相关主题,请使用不带AppCompat前缀的editTextStyle属性:
<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
发布于 2015-12-23 13:03:10
@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>
发布于 2016-04-16 02:42:06
首先,定义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
属性。请注意,如果您使用的是support库,则还需要覆盖属性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>
https://stackoverflow.com/questions/10903647
复制相似问题