2012-02-14 111 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);