您的位置:首页 > 其它

Volley NetworkImageView setImageResource 不起作用 原因

2017-08-16 10:09 411 查看
Volley的NetworkImageView setImageResource 设置本地resId时显示是空的,原因是 NetworkImageView 中 onLayout调用 loadImageIfNecessary 方法,

private void loadImageIfNecessary(final boolean isInLayoutPass) {
// 略

// if the URL to be loaded in this view is empty, cancel any old
// requests and clear the
// currently loaded image.
if (TextUtils.isEmpty(mUrl)) {
if (mImageContainer != null) {
mImageContainer.cancelRequest();
mImageContainer = null;
}
setDefaultImageOrNull();
return;
}

// 略
}

 setDefaultImageOrNull();

private void setDefaultImageOrNull() {

        if(mDefaultImageId != 0) {

            setImageResource(mDefaultImageId);

        }

        else {

            setImageBitmap(null);

        }

    }

所以就算设置了 setImageResource 也不显示了。

解决办法是:

setImageResource调用前,继续调用正常的 setImageUrl(); url传不为空的错误url,imageloader传正常的。

这样就可以显示本地的resId了。

方法2:只调用setDefaultImageResId方法即可。 

当然这是看源码后投机取巧了,是基于不想动volley源码的情况。当然如果直接把NetworkImageView源码导入工程的,那就啥都不用想,直接改,改到你舒心为止。嗯,要舒心,大家好才是真的好。

参考链接:http://qiita.com/kuchinashi_r/items/8a4265af50c337c2f180
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: