我已经以编程方式创建了一个ShapeDrawable,并希望在ImageView中显示它。如果我使用ImageView.setImageDrawable(),我将无法看到ShapeDrawable。但是,如果我使用ImageView.setBackground(),它就可以工作。
为什么ImageView.setImageDrawable()不起作用?
来自布局文件的ImageView:
为什么ImageView.setImageDrawable()不起作用?
来自布局文件的ImageView:
<ImageView
android:id="@+id/myImageView"
android:layout_width="100dp"
android:layout_height="200dp" />
Activity的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
}
setImageDrawable
之前必须设置图像的LayoutParams
,例如iv.setLayoutParams(newLinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
。 - user9025311setImageDrawable
函数,还是什么都没做? - user9025311