LayerDrawable слои слоев и закругленные угловые части не прозрачны - PullRequest
2 голосов
/ 14 февраля 2012

Я пытаюсь создать CustomButton динамически для кода Java с отступом 10 дп и закругленными углами 10 дп. Я написал следующее:

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, детали отступов и углов будут иметь черный фон и не будут прозрачными, как ожидалось.

ScreenShot: image

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Чтобы удалить черный фон, очистите цвет краски с помощью

sd.getPaint().setColor(0);
0 голосов
/ 14 февраля 2012

Я думаю, что это может быть достигнуто с помощью специального селектора для вашей кнопки, вместо того, чтобы писать целый класс. Взгляните на этот вопрос: Стандартная кнопка Android с другим цветом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...