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
后就像下图
所以如果它像下图那样聚焦它的到来
只有那条光标线是给定的强调色。但是提示和文字总是白色的!这甚至发生在 EditText
和 AppCompatEditText
希望这有帮助
我建议您只为您的 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 给我很好的引导。没有您的回答,我将无法解决此问题。非常感谢:)
编辑 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
后就像下图
所以如果它像下图那样聚焦它的到来
只有那条光标线是给定的强调色。但是提示和文字总是白色的!这甚至发生在 EditText
和 AppCompatEditText
希望这有帮助
我建议您只为您的 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 给我很好的引导。没有您的回答,我将无法解决此问题。非常感谢:)