LayerDrawable图层填充和圆角部分不透明

时间:2012-02-14 11:58:29

标签: android android-layout

我正在尝试为具有10dp填充和10dp圆角的java代码动态创建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中,填充和角落部分将具有黑色背景并且不按预期透明。

截图: image

2 个答案:

答案 0 :(得分:1)

要删除黑色背景,请使用

清除颜色
sd.getPaint().setColor(0);

答案 1 :(得分:0)

我认为这可以通过按钮的自定义选择器来实现,而不是编写整个类。 看看这个问题:Standard Android Button with a different color