如何将可绘制资源动态设置为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();
我使用函数 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();