[英]Android SDK: Can't style ActionBar of support library
出于某种原因,在实现support-v7时,无法使用style.xml设置操作栏的样式。
我有两个样式文件。 这是来自values文件夹的style.xml:
<resources>
<color name="primary">#009688</color>
<color name="primaryDark">#00796B</color>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/myActionBar</item>
</style>
<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/primary</item>
</style>
</resources>
值-v21中的棒棒糖样式如下:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primaryDark</item>
</style>
</resources>
这里发生了什么:
1)默认情况下,我的应用从support-v7库实现android.support.v7.app.ActionBarActivity。 当我启动它时:
a)在Android 4.4上,操作栏未着色,就像以前一样是黑暗的。
b)在Android 5设备上,它也不是彩色的,但是状态栏会变为彩色。
因此,操作栏样式不适用于support-v7的栏。 即使将全局textColor参数设置为明亮的值,每个文本也会更改颜色,但只有我的应用程序标题保持白色。
但是,我仍然可以在代码中为其着色: getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#673AB7")))
。
2)如果我为我的应用实现了android.app.Activity(不是android.support.v7.app.ActionBarActivity):
a)棒棒糖设备获得整洁的绿色操作栏和整洁的绿色状态栏。 b)但在4.4动作条上完全消失。
我尝试使用主题标签上的values / style.xml中的这些样式参数将其恢复,但是它们都不起作用:
<item name="android:windowActionBar">true</item>
<item name="android:displayOptions">showTitle</item>
最小SDK设置为15。
如何在两个平台上获取样式化的操作栏?
遵循本指南 :
1)您的所有活动都必须从ActionBarActivity扩展,而ActionBarActivity从v4支持库的FragmentActivity扩展,因此您可以继续使用片段。
2)删除values-v21 / themes.xml并仅保留values / themes.xml
3)告诉Android将工具栏用作ActionBar:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
4)在您的style.xml中,替换
<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/primary</item>
</style>
与
<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/primary</item>
</style>
只需将它们设置为values / style.xml中的自定义基本主题
<item name="colorPrimary">@color/your_primary_color</item>
<item name="colorPrimaryDark">@color/your_primary_dark_color</item>
<item name="colorAccent">@color/your_accent_color</item>
<item name="windowActionBar">false</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
并使用android.support.v7.widget.Toolbar
。 确保您使用的是支持库v21或更高版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.