我正在尝试为java代码动态创建一个10dp填充和10dp圆角的CustomButton。我写了以下内容:
public class CustomButton extends Button {
private GradientDrawable gd;
private ShapeDrawable sd;
private LayerDrawable ld;
private StateListDrawable sld;
public CustomButton(Context context) {
super(context);
gd = new GradientDrawable(GradientDrawable.Orientation.TL_BR, new int[]{Color.parseColor("#39D100"), Color.parseColor("#369212")});
gd.setCornerRadius(10);
sd = new PaintDrawable();
sd.setPadding(10, 10, 10, 10);
ld = new LayerDrawable( new Drawable[]{sd, gd} );
sld = new StateListDrawable();
sld.addState(new int[]{0,1}, ld);
setBackgroundDrawable(sld);
}
}如果我只将GradientDrawable或ShapeDrawable添加到StateListDrawable中,它将正常工作,但如果我将两者都添加到LayerDrawable中,则填充和边角部分将具有黑色背景,并且不会像预期的那样透明。
ScreenShot:

发布于 2012-03-23 03:44:39
要删除黑色背景,请使用清除绘制颜色
sd.getPaint().setColor(0);发布于 2012-02-14 21:51:21
我认为这可以通过按钮的自定义选择器来实现,而不是编写整个类。看一下这个问题:Standard Android Button with a different color
https://stackoverflow.com/questions/9276452
复制相似问题