Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在主题中设置全局编辑文本样式';行不通_Android_Android Layout_Android Fragments_Android Theme - Fatal编程技术网

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>