我试图为10dp填充和10dp圆角的Java代码动态创建CustomButton。我写道:LayerDrawable图层填充和圆角部分不透明
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填充和拐角部分将有一个黑色的背景,而不是透明的预期。
截图:
感谢清除油漆颜色!这是我的第一个想法,但我不确定是否可以从Java代码更改渐变。 – Paldom 2012-02-14 14:22:14
当然你可以: –
Drejc
2012-02-14 14:48:29
我的意思是动态的没有xml。我想用相同的其他参数创建许多不同的彩色渐变按钮。 – Paldom 2012-02-14 17:09:02