【问题标题】:ImageView.setImageURI does NOT work when trying to assign a R.drawable.X UriImageView.setImageURI 在尝试分配 R.drawable.X Uri 时不起作用
【发布时间】:2019-02-09 05:17:23
【问题描述】:

相关:

Need suggestion about a mixed "Uri / int id" images ambient

现在我的问题是:

ImageView imgView=(ImageView)findViewById(R.id.imgView);
Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image);
imageView.setImageURI(imgUri);

不起作用。为什么?

我知道

imgView.setImageDrawable(Drawable.createFromStream(
                    getContentResolver().openInputStream(imgUri),
                    null));

工作。

但这并不能解决我的问题。因为如果图像来自资源或来自相机 ACTION_PICK 意图,我想使用 uri 独立设置图像......

欢迎提出任何建议。 谢谢你。 问候

【问题讨论】:

  • 我不敢相信没有人有同样的问题......也没有解决方案......为什么这样的东西不起作用?为什么根本没有记录?

标签: android


【解决方案1】:

试试这个

Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image);
imageView.setImageURI(null); 
imageView.setImageURI(imgUri);

这是一种刷新 ImageButton 的解决方法,它尝试缓存以前的图像 Uri。传递null 有效地重置它。

本书建议的解决方案:Sams Teach Yourself Android Application Development in 24 Hours - 强烈推荐阅读。

【讨论】:

  • 谢谢。安卓太烂了,浪费了我大半天的时间。您的解决方案成功了。
  • 谢谢!顺便说一句,它不适用于非常大的图像。在小图片上它工作得很好。
  • @walla 这对我也不起作用。你还有别的答案吗?
【解决方案2】:

imageView.postInvalidate() 有效。或者 imageView.invalidate() 如果你在 UI 线程上。

【讨论】:

    【解决方案3】:

    你应该这样做

    Uri imgUri = Uri.parse("android.resource://my.package.name/drawable/image_sky");
    

    或者如果你想要这样

    Uri imgUri = Uri.parse("android.resource://" + getPackageName() + "/drawable/" + "image_sky");
    

    【讨论】:

      【解决方案4】:

      首先看看你是不是重写了onRestart方法并刷新了它。

      如果您将刷新活动图像将不会设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 2015-10-22
        • 2021-10-20
        • 2016-06-30
        相关资源
        最近更新 更多