如何动态更改按钮的可绘制颜色
How to change Drawable color dynamically for buttons
我有 drawable 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>
我将这个可绘制对象附加到一个按钮,如下所示
<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
有人能帮忙吗?谢谢。
试试这个我的朋友
Drawable myIcon = getResources().getDrawable( R.drawable.button );
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);
Kotlin 代码
val myIcon =ContextCompat.getDrawable(this@LoginActivity,R.drawable.button)
val filter: ColorFilter = LightingColorFilter(Color.BLACK, Color.BLACK)
myIcon.colorFilter = filter
我有 drawable 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>
我将这个可绘制对象附加到一个按钮,如下所示
<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
有人能帮忙吗?谢谢。
试试这个我的朋友
Drawable myIcon = getResources().getDrawable( R.drawable.button );
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);
Kotlin 代码
val myIcon =ContextCompat.getDrawable(this@LoginActivity,R.drawable.button)
val filter: ColorFilter = LightingColorFilter(Color.BLACK, Color.BLACK)
myIcon.colorFilter = filter