Java ?ColorPrimary在android 5.0以下不工作

Java ?ColorPrimary在android 5.0以下不工作,java,android,kotlin,Java,Android,Kotlin,在我的应用程序中,用户可以在蓝色和绿色之间切换主题。在安卓5.0以上的版本中,一切正常,但在安卓5.0以下,我的应用程序崩溃了 下面是我的风格代码 <style name="AppTheme.Blue" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/blue&

在我的应用程序中,用户可以在蓝色和绿色之间切换主题。在安卓5.0以上的版本中,一切正常,但在安卓5.0以下,我的应用程序崩溃了

下面是我的风格代码

  <style name="AppTheme.Blue" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/blue</item>
    <item name="colorPrimaryDark">@color/bllueDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.Green" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/bluish_green</item>
    <item name="colorPrimaryDark">@color/bluish_green</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

@颜色/蓝色
@颜色/颜色深
@颜色/颜色重音
@颜色/蓝绿色
@颜色/蓝绿色
@颜色/颜色重音
我的可绘制的文件代码是

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="?colorPrimary"></solid>
        <corners android:radius="3dp"></corners>
    </shape>
</item>

我的布局是

<androidx.constraintlayout.widget.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="90dp"
                        android:background="@drawable/my_drawable">
//other code
</androidx.constraintlayout.widget.ConstraintLayout>

//其他代码

在colors.xml中声明colorPrimary,然后重试
@color/colorPrimary
而不是
?colorPrimary

在colors.xml中声明colorPrimary,然后重试
@color/colorPrimary
代替
?colorPrimary

代替
?colorPrimary
,尝试使用此
?attr/colorPrimary
代替
?colorPrimary
,尝试使用这一个
?attr/colorPrimary

在较低的Android API级别中,XML Drawable中不支持
?attr/
引用。当它被引入时,我假设它是21级的,但是我找不到任何关于它的文档

因此,您必须直接使用颜色资源。如果需要为动态主题使用不同的颜色,则可以通过主题提供的颜色正确的绘图工具实现类似的效果


或者,您可以在UI环境中忽略这些旧的Android版本,甚至不支持这些版本。

在较低的Android API级别中,XML Drawable中不支持attr/
引用。当它被引入时,我假设它是21级的,但是我找不到任何关于它的文档

因此,您必须直接使用颜色资源。如果需要为动态主题使用不同的颜色,则可以通过主题提供的颜色正确的绘图工具实现类似的效果


或者,您可以在UI或甚至支持的上下文中忽略这些旧的Android版本。

更改此设置-感谢您的回复@color/colorPrimary从color.xml类返回颜色,但我需要主题的colorPrimary,您可以使用它来膨胀绘图表,并通过编程将其设置为
ConstraintLayout
的背景。更改此设置-感谢您的回复@color/colorPrimary从color.xml类返回颜色,但我需要主题的colorPrimary您可以使用它来膨胀绘图表,并通过编程将其设置为
ConstraintLayout
@color/colorPrimary从color.xml类返回颜色,但我需要主题的colorPrimary。但是谢谢你的回复。让我知道,如果你有,你可以让你的主题colorPrimary像@color/colorPrimary你读了我的全部问题和相应的代码吗?因为我有两个主题,两个主题都有不同的颜色。这没关系。问题是您试图使用带有“?”的颜色。您需要使用“@color/yourColor”。为此,您需要在styles.xml中确定这些颜色。如果有两种颜色,请在colors.xml中生成两种颜色。这是实现这类事情的标准方法。我的意思是,你不应该试图让你的主题色彩。相反,您应该在colors.xml中声明colorPrimary,以便在drawables等中使用它。@color/colorPrimary从color.xml类返回颜色,但我需要主题的colorPrimary。但是谢谢你的回复。让我知道,如果你有,你可以让你的主题colorPrimary像@color/colorPrimary你读了我的全部问题和相应的代码吗?因为我有两个主题,两个主题都有不同的颜色。这没关系。问题是您试图使用带有“?”的颜色。您需要使用“@color/yourColor”。为此,您需要在styles.xml中确定这些颜色。如果有两种颜色,请在colors.xml中生成两种颜色。这是实现这类事情的标准方法。我的意思是,你不应该试图让你的主题色彩。相反,您应该在colors.xml中声明colorPrimary,以便在drawables等中使用它。colorPrimary和?attr/colorPrimary都是相同的。顺便说一句,感谢您回复?colorPrimary和?attr/colorPrimary都是相同的。顺便说一句,感谢您的回复。您可以使用该工具对可绘图文件进行充气,并以编程方式将其设置为
ConstraintLayout
的背景。您可以使用该工具对可绘图文件进行充气,并以编程方式将其设置为
ConstraintLayout
的背景。