如何将可绘制资源动态设置为ImageView?

How to dynamically set drawable resource to ImageView?

我使用函数 drawCircle(int diameter) 到 return 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 代码重写,所以我无法动态更改椭圆形的大小。如果您能提出其他方法,那就再好不过了!

这可能是因为您没有为您的绘图设置宽度和高度。您可以使用以下代码设置默认大小。

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