首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageView setImageDrawable不为ShapeDrawable工作

ImageView setImageDrawable不为ShapeDrawable工作
EN

Stack Overflow用户
提问于 2018-05-17 18:47:08
回答 2查看 1.2K关注 0票数 6

我已经以编程方式创建了一个ShapeDrawable,并希望在ImageView中显示它。如果我使用ImageView.setImageDrawable(),我将无法看到ShapeDrawable。如果我使用ImageView.setBackground(),它就能工作。

为什么ImageView.setImageDrawable()不能工作?

来自布局文件的ImageView:

代码语言:javascript
复制
<ImageView
    android:id="@+id/myImageView"
    android:layout_width="100dp"
    android:layout_height="200dp" />

活动的onCreate:

代码语言:javascript
复制
@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
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-23 09:55:43

要在ShapeDrawable中显示ImageView,您的ShapeDrawable应该具有定义的高度和宽度。将以下属性添加到ShapeDrawable中。

drawable.setIntrinsicHeight(height); drawable.setIntrinsicWidth(width);

票数 6
EN

Stack Overflow用户

发布于 2018-05-28 08:57:00

您还可以使用简单视图,只需使用setBackgroundDrawable将其背景绘图设置为形状即可。

ImageView可能无法显示您的形状,因为它没有默认大小。您可以使用sD.setIntrinsicWidth和sD.setIntrinsicHeight为您的形状提供默认的测试工具。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50398553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档