将Android应用程序栏的colorPrimary颜色更改为渐变色

4
我需要将我的应用程序栏的颜色变为渐变颜色。我在drawable文件夹中创建了action_bar_bg.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:angle="90"
        android:centerColor="@color/colorPrimaryDark"
        android:endColor="@color/colorPrimary"
        android:startColor="@color/colorPrimary" />
</shape>

我试图在styles.xml中更改colorPrimary:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->

    <item name="colorPrimary">@drawable/action_bar_bg</item>

</style>

但它不起作用。我收到错误信息:android.content.res.Resources$NotFoundException: File res/drawable/action_bar_bg.xml from color state list resource ID #0x7f020046)。 我想要达到的效果如下:
app bar with gradient 在代码中,我需要改变什么?

colorPrimary 实际上期望的是一个颜色,而不是一个形状。你可以自己将 Toolbar 添加到你的布局中,并在那里手动设置背景。 - David Medenjak
2个回答

2
尝试这个方法。
现在有一个称为colorPrimary的新属性,您可以在主题中进行定义。这将使您的ActionBar或Toolbar具有单一颜色。
以下是一个小例子:
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">@color/my_action_bar_color</item>
</style>

请注意:在除了values-v21之外的每个values文件夹中,只需使用colorPrimary而不是android:colorPrimary。
您可以在Android上阅读有关自定义颜色调色板的更多信息。

0
在你的Activity的onCreate方法中执行此操作。
ActionBar bar = getActionBar();
Drawable gradient = getResources().getDrawable( R.drawable.action_bar_bg);
bar.setBackgroundDrawable(gradient);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接