2017-02-22 5 views
1

Ich versuche, ein Bild mit Glide zu laden:Glide nicht Bild Laden ohne Platzhalter

case "image": 
    Log.d("TRecyViewAdapter", "Got Image"); 
    ImageView imageView = new ImageView(context); 
    imageView.setLayoutParams(new GridLayoutManager.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.MATCH_PARENT 
    )); 
    contents.addView(imageView); 
    Glide.with(context).load(part.getContent()).into(imageView); 
    break; 

Es ist nichts zeigt.

Allerdings, wenn ich die letzte Zeile zu Picasso ändern:

Picasso.with(context).load(part.getContent()).into(imageView); 

Bild Lasten in voller Größe, so wie ich es erwartet hatte.

Auch. Wenn ich Glide mit einem Platzhalter verwenden:

Glide.with(context).load(part.getContent()).placeholder(R.mipmap.def_avatar).into(imageView); 

es das Bild lädt aber in einer sehr kleinen Größe (die Größe R.mipmap.def_avatar)

Ich mag die reale Größe Bild laden können ohne Platzhalter angeben zu müssen (es ist eine dynamische Ansicht und es soll viele verschiedene Bilder mit verschiedenen Größen und so zeigen)

Ich möchte Glide anstelle von Picasso verwenden, weil ich Unterstützung für animierte Gifs möchte.

+0

Ich habe vergessen zu sagen, dass das Bild aus dem Internet geladen wird. Es ist kein lokales Bild. – Enuff

+0

ist möglicherweise daran, dass Sie die Ansicht dynamisch hinzufügen. versuchen Sie, Fix Höhe und Breite von 'ImageView' setzen –

+0

Yep, sieht aus wie das Hinzufügen einer festen Größe zeigt das Bild. Die Sache ist, ich kann nicht im Voraus wissen, wie groß das Bild sein wird. – Enuff

Antwort

3

Sieht aus wie das Hinzufügen von Override macht den Trick. Das Bild wird jetzt wie erwartet geladen.

Glide.with(context).load(part.getContent()).override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).into(imageView); 
+0

Ich habe dieses Verhalten auch. Ist das ein Fehler oder eine Funktion? : D – Sermilion

0

Ich löste gerade dieses Problem für mich, die folgenden Attribute auf meinem Image im XML für mich den Trick gesetzt hatte:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:scaleType="fitCenter" /> 

</FrameLayout> 

Denn hier Bezug ist auch mein Android-Code:

public class MyCardViewHolder extends CardViewHolder { 

    public MyCardViewHolder(View inflated) { 
     super(inflated); 
    } 

    public void bind(MyCard card) { 
     ImageView imageView = ((ImageView) itemView.findViewById(R.id.image)); 

     Glide.with(itemView.getContext()) 
       .load(card.backgroundImageUrl()) 
       .into(imageView); 
    } 

}