Android - AppCompatEditText主题不会在片段内部应用

时间:2015-04-23 08:57:24

标签: android themes fragment appcompat-v7-r22.1

我已将新的app-compat库'com.android.support:appcompat-v7:22.1.0'添加到我的项目中,但是应用主题似乎有问题到AppCompatEditText时,它在片段内部。

这是我的EditText:

<android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textColor="@color/teal_300"
        android:textCursorDrawable="@null"
        android:textColorHint="@color/text_hint"
        style="@style/TextAppearance.AppCompat.Display1"
        android:theme="@style/Theme.MyTheme.EditText"/>

这是主题:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/teal_500</item>
    <item name="colorPrimaryDark">@color/teal_700</item>
    <item name="colorAccent">@color/orange_500</item>
    <item name="colorControlNormal">@color/grey</item>
    <item name="colorControlActivated">@color/teal_300</item>
    <item name="colorControlHighlight">@color/teal_300</item>
    <item name="colorSwitchThumbNormal">@color/teal_300</item>
</style>

<style name="Theme.MyTheme.EditText" parent="Theme.MyTheme">
    <item name="colorControlNormal">@color/orange_500</item>
    <item name="colorControlActivated">@color/orange_500</item>
</style>

所以基本上我只想将EditText下划线的颜色改为橙色而不是灰色/蓝绿色。

当我将此代码直接放在活动布局中时,它可以正常工作,因此下划线为橙色。但是如果我在片段的布局中放入相同的代码,则下划线为灰色/蓝绿色。所以这个主题似乎没有得到应用。

由于

2 个答案:

答案 0 :(得分:2)

这是22.1

中介绍的问题

使用传递给Fragment#onCreateView()的inflater实例时会出现问题。

现在的解决方法是使用getActivity()中的LayoutInflater.getLayoutInflater()。

答案 1 :(得分:0)

您应该使用样式而不是EditText的主题,如:

<style name="EditText" parent="Widget.AppCompat.EditText">
    <item name="colorControlNormal">@color/orange_500</item>
    <item name="colorControlActivated">@color/orange_500</item>
     <item name="android:textAppearance">@style/TextAppearance.AppCompat.Display1</item>
</style>

仅应用样式而不应用主题。