web-dev-qa-db-ja.com

GlideがリソースIDからImageViewに画像をロードしないのはなぜですか?

アプリに必要なすべての画像を取得しました。速度を上げて滑らかにしようとしているので、Glideを使用して画像を読み込んでいますが、アプリの他の領域では機能しますが、私のビューページャーで。

私のフラグメントでは、そのように画像をロードしようとしています

Glide.with(this).load(R.drawable.my_drawable).into(myImageView);

何も起こらないか表示されず、Glideから例外やエラーメッセージが表示されません。

9
Jacob Collins

デバッグとエラー処理 wikiページをチェックしてログを有効にしてください。これにより、ロードが失敗しているかどうかとその理由がわかります。

エラーログが表示されない場合は、サイズが0であるか、レイアウトを通過していない(可視性が_View.GONE_などに設定されている)ために、ビューにサイズがない可能性があります。その場合は、有効な幅と高さで override() への呼び出しを追加してチェックをテストできます(_400, 400_などを試してみてください)。

override()を呼び出すと問題が解決する場合は、xmlを調べて、ビューを固定サイズに変更できるか、少なくとも最終的には有効なサイズに変更できるかを確認してください。他のすべてが失敗した場合は、幅と高さとして_Target.SIZE_ORIGINAL_を指定してoverride()をいつでも呼び出すことができます。

5
Sam Judd

私はこの質問が閉じられてから長い間知っていますが、代わりにプレースホルダーまたはエラー画像を使用することでこれに対する良い解決策を見つけました。だからあなたは試すかもしれません

Glide.with(<<MyActivity>>)
    .load("")
    .placeholder(<<myDrawable>>)
    .into(imageView);

これがあなたが望んでいたものかどうかはわかりませんが、同じ問題を抱えている他の人がいる場合、少なくともこれは最小限の作業で機能するようです。 :)

14
Tobias Reich

VectorまたはSVGを使用している場合、ご使用のバージョンのGlideはこれをサポートしておらず、ロードに失敗する可能性があります。

0
Frank

Tobias Reichの方法 ロードURLが ""であるため、一連の警告ログが生成されます。警告ログが必要ない場合は、

これを試してください:

int drawableIdentifier = activity.getResources().getIdentifier("my_drawable_image_name", "drawable", activity.getPackageName());
Glide.with(activity)
     .load(drawableIdentifier)
     .into(imageView);
0
Joonsoo