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
確かに: –
Drejc
xmlを使わないで動的に意味します。私は他の同じパラメータで多くの異なる色のグラデーションボタンを作成したいと思います。 – Paldom