我已经以编程方式创建了ShapeDrawable
,并希望将其显示在ImageView
中。如果我使用ImageView.setImageDrawable()
,我将无法看到ShapeDrawable
。如果我使用ImageView.setBackground()
,则可以使用。
为什么ImageView.setImageDrawable()
不起作用?
布局文件中的ImageView:
<ImageView
android:id="@+id/myImageView"
android:layout_width="100dp"
android:layout_height="200dp" />
活动onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int x = 0;
int y = 0;
int width = 300;
int height = 250;
ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
drawable.getPaint().setColor(0xff74AC23);
drawable.setBounds(x, y, x + width, y + height);
ImageView iv = findViewById(R.id.myImageView);
iv.setBackground(drawable); // works
//iv.setImageDrawable(drawable); // doesn't work
}
答案 0 :(得分:5)
要在ImageView中显示ShapeDrawable,您的ShapeDrawable应定义高度和宽度。将以下属性添加到ShapeDrawable。
drawable.setIntrinsicHeight(height);
drawable.setIntrinsicWidth(width);
答案 1 :(得分:2)
您还可以使用简单的视图,并使用setBackgroundDrawable将其背景可绘制设置为形状。
ImageView可能无法显示您的形状,因为它没有默认大小。您可以使用sD.setIntrinsicWidth和sD.setIntrinsicHeight为您的形状赋予默认的大小调整器。