我正在使用 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/