Как динамически установить нарисованный ресурс для ImageView? - PullRequest
0 голосов
/ 13 февраля 2019

Я использую функцию drawCircle(int diameter) для возврата ShapeDrawable объекта, который является OvalShape.Затем я использую ImageView.setImageDrawable(), чтобы установить OvalShape.Но ImageViews все еще пусты.Как это сделать правильно?

Функция drawCircle():

public ShapeDrawable drawCircle (int diameter) {
        OvalShape ovalShape = new OvalShape();
        ShapeDrawable drawable = new ShapeDrawable(ovalShape);
        drawable.getPaint().setColor(getResources().getColor(R.color.textColorHint));
        drawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
        drawable.getPaint().setStrokeWidth((float)2);
        drawable.setBounds(0 ,0, diameter, diameter);

        return drawable;
    }

Установить ImageView:

one_img.setImageDrawable(drawCircle(selector_one_diameter));
two_img.setImageDrawable(drawCircle(selector_two_diameter));

Прежде всего, я попытался использовать файл .xmlописать овальные формы.Но поскольку значения в dimens.xml нельзя переписать в коде Java, я не могу динамически изменять размер овальных фигур.Не может быть лучше, если вы можете предложить другой путь!

1 Ответ

0 голосов
/ 13 февраля 2019

Это может быть из-за того, что вы не установили widht, height для вашего drawable.Вы можете установить размер по умолчанию, используя следующий код.

drawable.setIntrinsicWidth(); 
drawable.setIntrinsicHeight();
...