Android在主题中设置全局编辑文本样式';行不通
我面临着一个问题。我正试图在主题的帮助下使我的应用程序中的编辑文本看起来相同。Android在主题中设置全局编辑文本样式';行不通,android,android-layout,android-fragments,android-theme,Android,Android Layout,Android Fragments,Android Theme,我面临着一个问题。我正试图在主题的帮助下使我的应用程序中的编辑文本看起来相同。 我已经通过在线工具(9-patch图片)生成了样式,并尝试在我的主题中这样设置 <!-- Base application theme. --> <style name="DefaultAppTheme" parent="Theme.AppCompat"> <!-- Main theme colors --> <!-- you
我已经通过在线工具(9-patch图片)生成了样式,并尝试在我的主题中这样设置
<!-- Base application theme. -->
<style name="DefaultAppTheme" parent="Theme.AppCompat">
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="colorPrimary">@color/blue</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="colorPrimaryDark">@color/darkblue</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="colorAccent">@color/cornflowerblue</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:editTextStyle">@style/EditTextDefault</item>
</style>
@颜色/蓝色
@颜色/暗蓝色
@颜色/矢车菊蓝
真的
假的
@样式/编辑文本默认值
编辑文本的我的样式
<style name="EditTextDefault" parent="android:Widget.EditText">
<item name="android:background">@drawable/edit_text_holo_light</item>
<item name="android:textColor">@color/light_blue</item>
<item name="android:layout_marginLeft">@dimen/margin_edit_text_default</item>
<item name="android:layout_marginRight">@dimen/margin_edit_text_default</item>
<item name="android:layout_marginTop">@dimen/margin_edit_text_default</item>
</style>
@可绘制/编辑\文字\全息\灯光
@颜色/浅蓝色
@尺寸/边距\编辑\文本\默认值
@尺寸/边距\编辑\文本\默认值
@尺寸/边距\编辑\文本\默认值
但是,如果使用“编辑文本”而不为每个编辑文本手动指定样式,则这不起作用
这不管用
<EditText
android:id="@+id/edit_text_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/edit_text_password"
android:hint="@string/hint_enter_login"
android:inputType="textEmailAddress" />
这很有效
<EditText
android:id="@+id/edit_text_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/edit_text_password"
style="@style/EditTextDefault"
android:hint="@string/hint_enter_login"
android:inputType="textEmailAddress" />
我知道如果在主题中使用layout_*params,则不会产生影响,但其他属性应该可以工作
请帮助解决这个问题。您应该怎么做
用这个@android:style/Widget.EditText
代替parent=“android:Widget.EditText”
。我希望它能帮助你
请仔细阅读这个答案
除了修复对Widget.EditText的引用之外:
<style name="EditTextDefault" parent="@android:style/Widget.EditText">
您需要创建一个“主题”,并将其应用到清单中。像这样:
<application
...
android:theme="@android:style/DefaultAppTheme" >
</application>
如果您使用的是appcompat>v22,您可以尝试使用
<style name="EditText.Colored" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/colorNormal</item>
<item name="colorControlActivated">@color/colorActivated</item>
<item name="colorControlHighlight">@color/colorControlHighlight</item>
</style>
@颜色/正常颜色
@颜色/颜色激活
@颜色/颜色控制高光
在layout.xml中,将android:theme属性设置为edittext
<EditText
android:id="@+id/edit_text_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/edit_text_password"
android:theme="@style/EditText.Colored"
android:hint="@string/hint_enter_login"
android:inputType="textEmailAddress" />
而不是此
<item name="android:editTextStyle">@style/EditTextDefault</item>
@style/EditTextDefault
用这个
<item name="editTextStyle">@style/EditTextDefault</item>
@style/EditTextDefault
真奇怪。。。相同的设置(虽然EditTextDefault
可能应该继承自@android:style/Widget.EditText
,而不是android:Widget.EditText
)适用于我,无需为EditText
@blipinsk指定style
标记。您是对的。您也可以在默认主题@color/black
中使用这一行。这是一种资源样式,支持您正在运行的api,您可以同时使用。非常感谢!我可以对其他组件使用相同的逻辑吗?你知道是否有办法在应用程序主题中设置EditText主题吗?你能给出答案,以便仅为EditText创建通用主题吗?您正在用EditText覆盖常规应用程序主题,这没有任何意义。
<item name="editTextStyle">@style/EditTextDefault</item>