首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一致的样式设置为所有EditText (例如)

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

Stack Overflow用户
提问于 2012-06-06 03:28:47
回答 5查看 82.8K关注 0票数 86

我试图让我的应用程序中的所有EditText都有一个一致的外观。我意识到我可以这样做:

代码语言:javascript
运行
复制
<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具有这种样式:

代码语言:javascript
运行
复制
<EditText ...
    style="@style/App_EditTextStyle
    ...>

但是通过这种方式,我必须记住为我的应用程序中的每个EditText单独设置样式,这即使不容易出错,也是乏味的。

有没有什么方法可以让它成为主题的一部分?这是因为我不必将这种样式与每个EditText相关联。类似于这个虚构的代码块:

代码语言:javascript
运行
复制
<style name="App_Theme" parent="@android:style/Theme.Holo">
   ... 
   <item name="android:EditTextSyle">@style/App_EditTextStyle</item>
   ...
<style>

然后在我的AndroidManifest.xml中,我有类似这样的东西:

代码语言:javascript
运行
复制
<application
    ....
    android:theme="@style/App_Theme">

瞧!我所有的EditText都具有一致的样式,而不必为每个实例指定样式。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-06 04:09:28

覆盖自定义主题中指向EditText样式(名为editTextStyle :)的属性:

代码语言:javascript
运行
复制
<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>

并使您的自定义样式扩展Widget.EditText

代码语言:javascript
运行
复制
<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属性:

代码语言:javascript
运行
复制
<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
票数 159
EN

Stack Overflow用户

发布于 2015-12-23 13:03:10

@Luksprog的答案是正确的,但对我不起作用。经过一些实验后,我发现从editTextStyle中删除android名称空间对我来说是可行的。

代码语言:javascript
运行
复制
<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

并创建自定义样式以扩展Widget.EditText,或者如果使用AppCompat主题Widget.AppCompat.EditText

代码语言:javascript
运行
复制
<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>
票数 53
EN

Stack Overflow用户

发布于 2016-04-16 02:42:06

首先,定义EditText的样式。确保父样式为android:Widget.EditText

代码语言:javascript
运行
复制
<style name="CustomEditTextStyle" parent="android:Widget.EditText">

    <item name="android:textColor">#0F0F0F</item>
    <!-- ... More items here if needed ... -->
</style>

之后,覆盖定制主题中的android:editTextStyle属性。请注意,如果您使用的是support库,则还需要覆盖属性editTextStyle (不带android名称空间)。

代码语言:javascript
运行
复制
<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>
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10903647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档