您好我正在开发一个Android应用程序,其中我可绘制资源来设置按钮的背景。我想以编程方式更改可绘制的开始和结束颜色,即在按钮单击侦听器内的活动类中。我的绘画看起来像:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#be584c"
android:endColor="#be584c"
android:angle="270" />
<corners android:radius="2dp" />
<stroke android:width="1px"/>
</shape>
我将其设置为xml文件中按钮的背景。 android:background="@drawable/download_button"
我希望在活动类中更改此drawable的开始颜色和结束颜色如何执行此操作。有没有办法f =这样做。需要帮忙。谢谢。
答案 0 :(得分:9)
是的,有可能。您应该使用 GradientDrawable 来执行此操作。
int colors[] = { 0xff255779, 0xffa6c0cd };
GradientDrawable gradientDrawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
view.setBackgroundDrawable(gradientDrawable);
根据您的要求更改颜色代码。虽然我使用Color.parseColor("color code")
,但它不起作用。
方向有一些选项,如下所示。
GradientDrawable.Orientation.BOTTOM_TOP;
GradientDrawable.Orientation.LEFT_RIGHT;
GradientDrawable.Orientation.RIGHT_LEFT;
答案 1 :(得分:0)
Chintan的解决方案足够好,如果您不愿意再次创建GradientDrawable
,但是如果您只是想更改颜色而又不涉及填充等其他属性,则可以只需使用setColors
。在以下情况下,它显示了如何更改startColor
,centerColor
和endColor
。
int color = screenshot.getPixel(x, y);
GradientDrawable drawable = (GradientDrawable)binding.layoutStation.getBackground();
int colors[] = { color, 0xffffffff, color };
drawable.setColors(colors);
答案 2 :(得分:-1)
new GradientDrawable(GradientDrawable.Orientation.TL_BR,new int [] {0xFF141a24,0xFF293f49,0xFF72554c})