在appcompat 22.2

时间:2015-06-29 11:29:51

标签: android android-appcompat android-design-library appcompat-v7-r22.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时,它就像下面的图像enter image description here

但升级到AppCompat-V7:22.2.0之后就像下图一样 enter image description here

所以,如果它集中来到下面的图像 enter image description here

只有该光标线具有给定的强调色。但提示和文字总是白色的!即使在EditTextAppCompatEditText中也会发生这种情况。希望这有助于

3 个答案:

答案 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.0app: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,现在就是。

顺便说一句,我不知道在主题中使用主题项是否是一种很好的做法。