为所有 EditText 设置一致的样式(例如)

2024-01-27

我正在努力让一切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>

Edit:

如果您使用的是较新的 AppCompat 相关主题,请使用不带 android 前缀的 editTextStyle 属性:

<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为所有 EditText 设置一致的样式(例如) 的相关文章

随机推荐