Android 如果此图纸中的图层可绘制,请更改颜色

Android 如果此图纸中的图层可绘制,请更改颜色,android,android-drawable,Android,Android Drawable,我正在尝试动态地改变这张画的颜色 可绘制的xml是: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/status_colour_outer" android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp

我正在尝试动态地改变这张画的颜色

可绘制的xml是:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:id="@+id/status_colour_outer"
    android:bottom="4dp"
    android:left="4dp"
    android:right="4dp"
    android:top="4dp">
    <shape
      android:shape="oval">
      <solid android:color="@color/red"/>
    </shape>
  </item>
  <item android:id="@+id/status_colour_inner">
    <shape
      android:shape="oval">
      <stroke
        android:width="2dp"
        android:color="@color/red"/>
    </shape>
  </item>
</layer-list>
mColours.getDisplayClasses().get(position.getColor())


所有这些操作只返回一个颜色字符串,如“#B5FFC9”

尝试使用活动
上下文来获取
可绘制的

LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(YourActivity.this,R.drawable.your_shape)

它适用于单层,内层,但当我调用GradientDrawable shape1=(GradientDrawable)layers.findDrawableByLayerId(R.id.status\u color\u outer)时,它可以正常工作;在外层,它不适用于颜色检查,因为某些设备会将其涂成黑色,所以永远不要将带有边框的形状保留为无颜色!
LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(YourActivity.this,R.drawable.your_shape)