web-dev-qa-db-ja.com

ピカソが画像を読み込まない

これがピカソのコードです:

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() {


        }
    });

_urlの値は次のとおりです。 http://kiagallery.ir/Images/Upload/Collection%20101/Spring%20101/d4a03b66dc7b46c694615c549b78b2e9.jpg

そしてここに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関数を確認しましたが、呼び出されませんでした。

編集: 200dpのようにimageviewの幅と高さの固定値を指定すると画像が読み込まれますが、wrap_contentに変更すると画像が表示されません。

14
arash moeen

私の推測では、ImageViewの幅と高さがWRAP_CONTENTによって定義されている間は、ピカソのfit()メソッドをしないでください

このメソッドは、ImageViewが測定されるまで待機し、イメージのサイズを正確に一致するようにサイズ変更します。 ImageViewWRAP_CONTENTで定義されたサイズを持っている間、メソッドgetMeasuredWidth()およびgetMeasuredHeight()は0を返し、ImageViewが見えなくなります

29

マニフェストへの追加権限を忘れないでください

<manifest ...>
    <uses-permission Android:name="Android.permission.INTERNET" /> 
61
Defuera

NetworkPolicy(NetworkPolicy.OFFLINE)を使用している場合、ピカソを使用して画像を取得できない可能性があります。

2
Anand Savjani

ViewPagerの画像がフルスクリーンDialogFragment内に配置されるという同様の問題に直面していました。同じViewPagerを別の場所に配置すると完全に機能し、ピカソは期待どおりに画像をロードしました。ただし、フルスクリーンDialogFragmentに配置した場合にのみ、一部の画像が空白で表示されます。サーバーから画像が正常にフェッチされ、ImageViewにロードされたようですが、ImageViewはまだ空白のように見えました。

上記の回答または同様のスレッドのどれも私にとってうまくいきませんでした。

それで、私は Glide と呼ばれる別の素晴らしいライブラリに切り替えました。ピカソとよく似ています。詳細は here および here をご覧ください。これは最も適切な答えではないかもしれませんが、同様の問題で立ち往生している人に一撃を与える価値があるかもしれません。

0
kds23