我在Nexus 7上尝试新的Material Design,并且有以下奇怪的行为。第一个应用程序启动时,“溢出菜单”图标的颜色不同。
我更改了android:textColorPrimary
颜色并阅读了此tutorial。
首次发布应用:
第二次应用启动:
如您所见,首次启动时未设置主要文本颜色的颜色。仅在我按下主页按钮并重新启动应用程序时才会设置。这是我的styles.xml
文件:
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
<item name="android:colorPrimary">#FF4444</item>
<item name="android:colorPrimaryDark">#CC0000</item>
<item name="android:textColorPrimary">#000000</item>
</style>
有人可以解释,为什么会出现这种行为?
我设置android:minSdkVersion="21"
并且不想使用支持库。
答案 0 :(得分:2)
我在PreferenceActivity
设备上运行无法使用appcompat-v7库的LOLLIPOP
时遇到了同样的问题。首次打开此活动时,溢出图标始终为白色,完全忽略android:textColorPrimary
和android:colorControlNormal
。然而,后续运行或方向更改会导致正确着色。
我创建了一个可以帮助你缓解这个问题的要点。代码将全局布局观察器绑定到工具栏,当它找到溢出图标时,它会替换它并取消绑定观察者。所以不要在你不希望出现溢出图标的地方使用它,因为在这种情况下观察者不会受到限制。
链接到要点:https://gist.github.com/consp1racy/4b640679de553fdb3046
答案 1 :(得分:1)
只需为选项菜单添加辅助文本颜色,即:
<item name="android:textColorSecondary">@color/text_color</item>
在某些情况下,辅助颜色设置为原色。我不知道为什么。
答案 2 :(得分:1)
也添加这些项目:
<item name="actionMenuTextColor">@color/white</item>
<item name="android:actionMenuTextColor">@color/white</item>
如果这没有用,那就试试这个:
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
<item name="android:itemTextAppearance">@style/TextAppearance</item>
</style>
<style name="TextAppearance">
<item name="android:textColor">@android:color/white</item>
</style>
这适用于Holo.Light.DarkActionBar
答案 3 :(得分:1)
如果您想在21之前的设备中使用材料设计,则需要扩展Theme.AppCompat.Light.NoActionBar
主题。为此,您需要添加编译com.android.support:appcompat-v7:21.0.0
作为项目的依赖项,这样您就可以在布局中使用工具栏。
然后在 values / themes.xml::
中定义主题<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/my_awesome_color</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/my_awesome_darker_color</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">@color/accent</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight & colorSwitchThumbNormal. -->
</style>
以及 layout / my_activity.xml 中的工具栏:
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
你有可选的attrs来定义主题和popupTheme:
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
Chris Banes写了一篇关于此的好文章,你应该阅读https://chris.banes.me/2014/10/17/appcompat-v21/
我读到了你使用eclipse的问题的评论,我强烈建议使用android studio + gradle而不是eclipse。
答案 4 :(得分:1)
Just add android:theme="@style/ThemeOverlay.AppCompat.Dark"
to the Toolbar
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/ThemeOverlay.AppCompat.Dark
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
overflow menu icon will be white now :)