以编程方式更改图层列表中形状的颜色



我正在尝试以编程方式更改selectable_kachel_shape的颜色。下面是 xml 文件:

kachel_ticked_style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape
            android:id="@+id/selectable_kachel_shape"
            android:shape="rectangle" >
            <stroke
                android:width="5dp"
                android:color="@color/headrbar_color" />
        </shape>
    </item>
    <item>
        <rotate
            android:fromDegrees="45"
            android:pivotX="120%"
            android:pivotY="100%"
            android:toDegrees="45" >
            <shape android:shape="line" >
                <stroke
                    android:width="40dp"
                    android:color="@color/headrbar_color" />
            </shape>
        </rotate>
    </item>
    <item
        android:right="5dp"
        android:top="5dp">
        <bitmap
            android:gravity="top|right"
            android:src="@drawable/selectable_tiles_check" />
    </item>
</layer-list>

我在片段中调用以下代码

LayerDrawable layers = (LayerDrawable)  this.getActivity().getResources().getDrawable(R.drawable.kachel_ticked_style);
GradientDrawable shape = (GradientDrawable) (layers.findDrawableByLayerId(R.id.selectable_kachel_shape));
                       shape.setColor(this.getActivity().getResources().getColor(android.R.color.background_dark);

1.为什么我在shape.setColor中得到一个NullPointerException?

2.如何以编程方式更改形状内的颜色,即图层列表内的颜色?

好的,我找到了答案,我只需要将形状的 id 放在项目中而不是在形状中kachel_ticked_style.xml

<item 
    android:id="@+id/selectable_kachel_shape">
        <shape
             android:shape="rectangle" >
            <stroke
                android:width="5dp"
                android:color="@color/headrbar_color" />
        </shape>
    </item>

然后,您可以更改调用shape.setColor的形状的颜色或调用shape.setStroke(strokeWidth,strokeColor)的笔触的颜色

相关内容

  • 没有找到相关文章

最新更新