2012-02-14 110 views
2

我试图为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填充和拐角部分将有一个黑色的背景,而不是透明的预期。

截图: image

回答

0

我认为这可以为您的按钮自定义选择器achived,而不是写了全班同学。 看看这个问题:Standard Android Button with a different color

+0

感谢清除油漆颜色!这是我的第一个想法,但我不确定是否可以从Java代码更改渐变。 – Paldom 2012-02-14 14:22:14

+0

当然你可以: Drejc 2012-02-14 14:48:29

+0

我的意思是动态的没有xml。我想用相同的其他参数创建许多不同的彩色渐变按钮。 – Paldom 2012-02-14 17:09:02

1

要除去黑色的背景,与

sd.getPaint().setColor(0);