android - 通过 AppCompat 在 pre-lollipop 上的可绘制对象中使用 colorPrimary

标签 android drawable android-appcompat

我正在使用 AppCompat 22.1.1。

由于某些原因,我的应用程序可以在用户导航期间动态更改其主题。 (即,移动到应用程序的另一部分,例如在 Google Play 商店应用程序中,当您从“我的应用程序”部分移动到“电影”部分时)

为了避免为每个主题创建一个可绘制背景,我尝试创建这样的背景:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/colorPrimary" /></shape>

当以编程方式更改主题时,我想 colorPrimary 也会更改,之后膨胀的按钮将被着色为新主题的颜色。

但是我在预 Lollipop 上有一个膨胀异常(但适用于 Lollipop )。可绘制对象找不到属性 attr/colorPrimary,为什么?

这是我正在使用的简单 theme.xml :

 <style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/my_blue</item>
    <item name="colorPrimaryDark">@color/my_blue_dark</item>
    <item name="colorAccent">@color/my_blue_light</item>
</style>

颜色位于values/colors.xml中,只是六种颜色。所有资源都位于“values”目录中,而不是values-r21目录中。

最佳答案

在res/color/中创建color_primary.xml颜色资源:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="?attr/colorPrimary"/>
</selector>

然后在您的绘图中引用它:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
   <solid android:color="@color/color_primary" />
</shape>

关于android - 通过 AppCompat 在 pre-lollipop 上的可绘制对象中使用 colorPrimary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29918582/

相关文章:

java - 如何回收 LinearLayout 中的 View ,以避免多次调用 findViewById()?

android - Android NDK错误

java.lang.NoClassDefFoundError : Failed resolution of: Landroid/support/v7/appcompat/R$drawable; 错误

android - iOS中有没有类似于Android的XML Drawables的东西?

Android:AppCompat Snackbar 和非 AppCompat FloatingActionButton

Android appcompat showAsAction ="never"。子菜单不出现

java - 创建一个单独的方法来从 Assets 文件夹中的子文件夹中读取文本文件

android - 获取 facebook 用户的好友列表

android - 在选择器中更改可绘制对象的颜色

android - appcompat-v7 工具栏菜单 - 选择颜色不影响文本背景