Edittext 颜色在 appcompat 22.2 中为白色

Edittext color is white in appcompat 22.2

编辑 2 : 这是因为行

<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>

styles.xml 中。我正在使用它在 ToolBar 中显示浅色(白色)文本和返回主页按钮。如果我将其更改为 <item name="theme">@style/ThemeOverlay.AppCompat.Light</item>,则 EditText 会按预期工作,但我的 ToolBar 文本和返回主页按钮的颜色会变为深色(黑色)。

因为我使用的是深色 ToolBar 我想用浅色(白色)显示文本和返回主页按钮。

我尝试使用 <item name="android:theme">...</item> 而不是 <item name="theme">...</item> 但没有任何帮助,工具栏文本和后退按钮仍然是深色!有人知道吗?帮帮我!

实际问题:

appcompat-v7:22.2.0 中,我使用了 EditText。我正在为 Activity

使用以下主题
<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/myPrimaryColor</item>
    <item name="colorPrimaryDark">@color/myPrimaryDarkColor</item>
    <item name="colorAccent">@color/myAccentColor</item>
    <item name="android:windowBackground">@color/myWindowBackground</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="colorControlHighlight">#0000AA</item>
</style>

但是 EditText 的颜色是白色。底线、提示和文本都是白色的。我听说 AppCompat 中有一个错误,但是如何解决这个问题?

编辑 1: 添加更多信息

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_marginTop="@dimen/marintopforelements"
          android:gravity="center"
          android:orientation="vertical"
          android:padding="10dp"
          android:paddingTop="@dimen/templatePaddingTop">

          <android.support.v7.widget.AppCompatEditText
                android:id="@+id/emailresponse"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="left|center"
                android:layout_marginLeft="@dimen/examtextdiff"
                android:imeOptions="actionNext"
                android:inputType="textEmailAddress"
                android:minLines="2"
                android:paddingRight="5dp"
                android:textSize="@dimen/inboxTabTextSize"/>

</LinearLayout>

colors.xml

<color name="myPrimaryColor">#3F51B5</color>
<color name="myPrimaryDarkColor">#FF304081</color>
<color name="myAccentColor">#3F51B5</color>

所以之前我用AppCompat-V7:21的时候是这样的

但是升级到AppCompat-V7:22.2.0后就像下图

所以如果它像下图那样聚焦它的到来

只有那条光标线是给定的强调色。但是提示和文字总是白色的!这甚至发生在 EditTextAppCompatEditText 希望这有帮助

我建议您只为您的 EditText 创建一个 theme/style。 Appcompat默认使用 android:textColorSecondary 作为 EditText 底线的颜色,尽管您没有在主题中定义它,所以很难说出为什么您的底线、文本和提示是彩色的白色的。

下面是 EditText 的单独主题的示例

<style name="ThemeEditTextLight">
    <!-- bottom line color -->
    <item name="colorControlNormal">#000000</item>
    <!-- text color -->
    <item name="android:textColor">#000000</item>
    <!-- hint text color -->
    <item name="android:textColorHint">#BDBDBD</item>
</style>

然后只需将主题设置为您的 EditText:

 <EditText
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="My hint"
     android:theme="@style/ThemeEditTextLight" />

这种方法可以让您更好地控制 EditText 的颜色。

首先,您应该使用 EditText,而不是兼容的。在运行时,支持库仅在需要时用 appcompat 替换 EditText。

关于您的问题,appcompat 22.2 引入了 android:theme 的使用,而不是 app:theme。 我觉得你的style里面的theme这个项目在之前的appcompat版本中是没有应用的,现在是。

顺便说一下,我不知道将 主题 项目用作主题是否是一个好习惯。

好的,我修好了!

我当时做的是,我想以白色显示 ToolBar 内容,因为我的工具栏是深色的,所以我使用了这一行

<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>styles.xml

这在 appcompat-v7:21.+ 上运行良好。

但是在 appcompat-v7:22.2.0 中,因为 app:theme 被贬值了(@Guillaume Imbert 在他的回答中提到)。

所以这就是混乱。我没有在项目中的任何地方使用“app:theme”,但它仍然不断向我显示警告。所以我再次用谷歌搜索并找到了这个

这让我遵循 blog by Chris Banes 清楚地解释了它。

现在我从 styles.xml 中删除了 <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>。所以我的 ToolBar 内容是深色的(黑色)。

最后在我的 ToolBar 中添加 android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 成功了,所以我的工具栏代码看起来像

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/action_bar_size_x2"
    android:background="@color/myPrimaryColor"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

所以这可能对某人有所帮助。

感谢@reVerse 和@Guillaume Imbert 给我很好的引导。没有您的回答,我将无法解决此问题。非常感谢:)