我有一个带有按钮的xml,背景可绘制为:
<shape android:shape="rectangle">
<corners android:bottomRightRadius="20dp"
android:topLeftRadius="20dp"/>
<stroke android:width="1dp" android:color="@color/black"/>
</shape>
我想以编程方式仅更改按钮背景的颜色。 所以我尝试了这个,
button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.red), PorterDuff.Mode.SRC_ATOP);
然而,当我使用setColorFIlter()时,我根本看不到笔画。 任何输入?
答案 0 :(得分:0)
这不是您问题的最佳解决方案,但肯定是
RippleDrawable rippleImgStart;
Drawable imgStart;
final int ColorWhiteOpacity = Color.argb(75,255,255,255);
imgStart = ContextCompat.getDrawable(this, R.drawable.start);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
rippleImgStart = new
RippleDrawable(ColorStateList.valueOf(ColorWhiteOpacity), imgStart, null);
btn.setImageDrawable(rippleImgStart);
}
这基本上用于为图像提供连锁效果,因此你也可以实现连锁效果。
和ColorWhiteOpacity您可以使用颜色并将其设置为图像。
在这里你可以找到例子:link
答案 1 :(得分:0)
这对我有用。
GradientDrawable buttonBackground = (GradientDrawable)button.getBackground();
buttonBackground.setColor(color);