Android: установка отступов на фоне наложенного изображения - PullRequest
5 голосов
/ 11 марта 2011

Я пытаюсь создать динамическое меню значков для моего приложения для Android. Значок сделан из 2-х рисованных фоновых изображений из 9-ти патчей с наложением изображения иконки.

Со ссылкой на наложение двух изображений в Android для установки просмотра изображений , у меня есть следующий код, который имеет наложение красиво.

        Resources res = parent.getResources();
        Drawable icon_bg = res.getDrawable(R.drawable.menu_icon_bg);
        Drawable icon = res.getDrawable(R.drawable.menu_icon);

        // Not working
        int int_icon_height = icon.getIntrinsicHeight();
        int int_icon_width = icon.getIntrinsicWidth();
        Rect rect_icon_bg_bound = new Rect();
        rect_icon_bg_bound.left = 0;//(int) Math.round(int_icon_width*-1.5);
        rect_icon_bg_bound.right = (int) Math.round(int_icon_width*1.5);
        rect_icon_bg_bound.top = 0;//(int)Math.round(int_icon_height*-1.5);
        rect_icon_bg_bound.bottom = (int)Math.round(int_icon_height*1.5);
        icon_bg.setBounds(rect_icon_bg_bound);

        Drawable[] layers = new Drawable[2];
        layers[0] = icon_bg;
        layers[1] = icon;

        LayerDrawable layerDrawable = new LayerDrawable(layers);
        ImageView iv_icon_combined = new ImageView(getApplicationContext());
        iv_icon_combined.setImageDrawable(layerDrawable);

Проблема, с которой я сейчас сталкиваюсь, заключается в добавлении отступа, чтобы значок имел некоторый интервал внутри фона.

Надеюсь получить хоть какое-то просветление здесь, заранее спасибо.

1 Ответ

6 голосов
/ 15 августа 2011

Я только что столкнулся с этой же проблемой.Взгляните на метод setLayerInset в LayerDrawable.Он принимает уровень слоя в качестве аргумента, а затем модификаторы для левой, верхней, правой и нижней границ объекта рисования.

...