这是毕加索的代码:
ImageView img = (ImageView)findViewById(R.id.product_image);
Picasso.with(this)
.load(_url)
.fit()
.into(img, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
这是xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/product_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/product_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:layout_below="@id/product_image"/>
<TextView
android:id="@+id/product_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:layout_below="@id/product_name"/>
</RelativeLayout>
你可以看到图像可以通过浏览器访问但是毕加索无法加载它,我已经检查了onError函数并且它从未被调用过,我很安静地丢失在这里,任何帮助都将不胜感激。
编辑:当我提供imageview的宽度&amp;高度固定值,如200dp,它加载图像,但当我将其更改为wrap_content时,它不会显示图像。
答案 0 :(得分:61)
不要忘记为清单添加权限
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
答案 1 :(得分:29)
我的猜测是,当fit()
的宽度和高度由ImageView
定义时,不会在毕加索中调用WRAP_CONTENT
方法。
此方法等到测量ImageView
并调整图像大小以与其大小完全匹配。虽然ImageView
的大小由WRAP_CONTENT
定义,但方法getMeasuredWidth()
和getMeasuredHeight()
似乎会返回0,这会使您的ImageView
不可见
答案 2 :(得分:2)
如果您使用的是networkPolicy(NetworkPolicy.OFFLINE),则可能无法使用Picasso获取图像。
答案 3 :(得分:0)