如何动态更改按钮的可绘制颜色

时间:2017-06-13 01:42:20

标签: android android-layout drawable android-drawable android-color

我有可绘制的xml up.xml,如下面的代码

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <rotate
        android:fromDegrees="45"
        android:toDegrees="45"
        android:pivotX="-40%"
        android:pivotY="87%" >
        <shape
            android:shape="rectangle" >

            <solid
                android:color="@color/green" />
        </shape>
    </rotate>
</item>
</layer-list>

我将这个drawable附加到按钮上,如下所示

   <Button android:id="@+id/bill_amount_up"
   android:layout_width="30dp"
   android:layout_height="30dp"
   android:background="@drawable/up"
     />

我正在尝试在我的代码中动态更改up.xml文件中的实体android:color =“@ color / green”的颜色。我尝试了以下方法,但它没有用。

 ((GradientDrawable)billAmountUp.getBackground()).setColor(color);

我收到以下错误 java.lang.ClassCastException:android.graphics.drawable.LayerDrawable无法强制转换为android.graphics.drawable.GradientDrawable

有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:3)

试试这个我的朋友

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);