2012-02-14 7 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

+0

確かに: Drejc

+0

xmlを使わないで動的に意味します。私は他の同じパラメータで多くの異なる色のグラデーションボタンを作成したいと思います。 – Paldom

1

sd.getPaint().setColor(0); 
関連する問題