setColorFilter to Button而不改变笔画

时间:2016-06-08 10:26:26

标签: android android-drawable android-button

我有一个带有按钮的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()时,我根本看不到笔画。 任何输入?

2 个答案:

答案 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);