在android中以编程方式更改可绘制颜色

时间:2017-05-22 13:05:40

标签: android xml drawable

我有以下平行四边形形状:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="200dp"
    android:height="50dp"
    android:viewportWidth="200"
    android:viewportHeight="50">

    <path android:fillColor="#000000"
    android:pathData="M 200 0 L 20 0 L 0 50 L 180 50 L 200 0" />
</vector>

我以这种方式使用它

    <View

        android:layout_width="66dp"
        android:layout_height="26dp"
        android:layout_centerInParent="true"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="112dp"
        android:background="@drawable/shape"
        android:onClick="test"
        android:tag="p112"
        app:layout_constraintHorizontal_bias="0.615"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

现在我想在点击后将其颜色从黑色更改为白色。触摸后触发功能“测试”。但我发现所有背景颜色都会改变我的黑色平行四边形到白色矩形。有什么方法可以改变它的颜色。即使操纵xml也没关系。 TNX

测试功能:

    public void test(View view){
        view.setBackgroundColor(Color.WHITE);
    }

3 个答案:

答案 0 :(得分:5)

Drawable backgroundDrawable = DrawableCompat.wrap(view.getBackgroundDrawable())。mutate(); DrawableCompat.setTint(backgroundDrawable,color); 你可以用!!

答案 1 :(得分:0)

尝试使用setBackgroundTint而不是颜色。这应该会改变背景资源。

答案 2 :(得分:-1)

您无法在运行时更改单个路径的颜色。但是,您可以更改整个矢量的颜色。