编辑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
中也会发生这种情况。希望这有助于
答案 0 :(得分:3)
我建议您仅为EditText
创建主题/样式。 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" />
这种方法可以让您更好地控制EditTexts的着色。
答案 1 :(得分:2)
好的,我修好了!
我正在做的是,我想以白色显示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”,但它仍然会向我显示警告。所以我再次用Google搜索并找到了这个link。
这使我跟随blog by Chris Banes清楚地解释了它。
现在我从<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
移除了styles.xml
。所以我的ToolBar
内容是黑暗的(黑色)。
最后在android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
中添加ToolBar
就行了,所以我的工具栏代码看起来像
<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 :(得分:1)
首先,你应该使用EditText,而不是compat。在运行时,只有在需要时,支持库才会使用appcompat替换EditText。
关于您的问题,appcompat 22.2介绍了使用 android:theme 而不是 app:theme 。 我认为您的样式中的项目主题未应用于以前版本的appcompat,现在就是。
顺便说一句,我不知道在主题中使用主题项是否是一种很好的做法。