Picasso
ne peut pas charger l'image dessinable
dans ImageView
, j'ai essayé de modifier les ImageView
largeur et hauteur, redimensionnement de l'image, chargement avec et sans fit ()
, resize ()
ou center ()
et l'image n'est toujours pas visible . J'utilise Picasso
sur l'ensemble du projet, et partout fonctionne bien, mais cela ne donne aucun résultat à celui-ci.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mView = inflater.inflate(R.layout.list_full, container, false); refreshIV = mView.findViewById(R.id.ivSynchroIcon); mobileArray = new ArrayList<IssuePOJO>(); dbStats.open(); generateList(); mView = view; return mView; }
Appel de méthode:
Picasso.get().load(R.drawable.refresh_icon) .resize(10, 10) .into(refreshIV);
Je l'appelle dans onViewCreated ()
et j'ai essayé de le redimensionner avec des valeurs différentes également.
Je veux obtenir une barre inférieure cliquable avec l'icône de rafraîchissement (et des informations sur l'heure de la dernière synchronisation), pour synchroniser les données avec le service dans la méthode onClick
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainFullFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/mainThemeBlack" tools:context=".MainTabsActivity"> <RelativeLayout android:id="@+id/rlSynchroView" android:layout_width="match_parent" android:layout_height="70dp" android:layout_alignParentBottom="true" android:background="@color/bottom_sheet_blue"> <TextView android:id="@+id/tvSynchroLast" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="end" android:layout_marginEnd="10dp" android:textColor="@color/mdtp_white" android:text="Last synchro: 10:38"/> <ImageView android:id="@+id/ivSynchroIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tvSynchroLast" android:elevation="5dp"/> </RelativeLayout> <android.support.v7.widget.RecyclerView android:id="@+id/listFullView" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="10dp" android:paddingRight="10dp" android:dividerHeight="10.0sp" android:layout_above="@id/rlSynchroView" android:background="?android:attr/selectableItemBackground" android:divider="@color/mainThemeBlack" android:paddingBottom="70dp" android:clipToPadding="false"> </android.support.v7.widget.RecyclerView> </RelativeLayout>
5 Réponses :
Picasso a ce problème, vous devriez essayer d'utiliser un espace réservé avec votre dessinable
Picasso.get().load(R.drawable.refresh_icon) .resize(10, 10) .placeholder(R.drawable.refresh_icon) .into(refreshIV);
pourquoi utilisez-vous un espace réservé?
vous le chargez dans une mauvaise image. Changez votre code comme ceci
Picasso.get() .load(R.drawable.refresh_icon) .into(ivSynchroIcon, new Callback() { @Override public void onSuccess() { } @Override public void onError(Exception e) { } })
Si vous voulez voir ce qui ne va pas, ajoutez simplement le rappel PIcasso comme ceci
Picasso.get().load(R.drawable.refresh_icon).into(ivSynchroIcon);
J'ai édité, refreshIV = mView.findViewById (R.id.ivSynchroIcon);
@SkypeDogg. voir la réponse mise à jour. imprimez maintenant votre exception et votre succès à la fois. voir ce qui se passe
Je l'ai configuré pour imprimer "succès" en cas de succès, et e.getMessage ()
en cas d'erreur, et voici ce que j'ai: 02-21 13: 12: 27.677 32724- 32724 / com.example.damianadamski.Service D / PICASSO: success
. On dirait que cela fonctionne bien, mais toujours aucune image chargée
L'arrière-plan de la mise en page est bleu, l'icône est blanche avec un fond transparent. Aucune idée de ce qui ne va pas.
@SkypeDogg essayez avec une image différente pour le test
J'ai essayé 3 autres drawables que j'utilise en projet, mais sans résultat
je ne pense pas qu'il y aura de problèmes maintenant. Tout est parfait. mais faites simplement que vous utilisez une image jpg ou png. essayez avec une image différente, nettoyez et construisez votre projet. et assurez-vous que votre imageview est visible dans la conception également
essayez cette ligne
Picasso.with(context).load(url).resize(10, 10).into(refreshIV);
Puisque vous avez déjà le dessinable (refresh_icon) dans vos ressources, vous pouvez le mettre directement dans la mise en page.
<ImageView android:id="@+id/ivSynchroIcon" android:layout_width="70dp" android:layout_height="70dp" android:padding="10dp" android:layout_below="@+id/tvSynchroLast" android:src="@drawable/refresh_icon" android:elevation="5dp"/>
Si vous voulez quand même utiliser Picasso, essayez de vérifier l'élément ivSynchroIcon dans Inspecteur de mise en page.
Ainsi, vous pouvez voir où la vue d'image est placée, ainsi que les mesures.
Dans Android Studio Tools -> Layout Inspector
icône d'actualisation
est de 128 x 128, donc je ne suis pas sûr qu'elle sera redimensionnée à partir de XML
La hauteur de votre disposition rlSynchroView est de 70dp. Donc, donnez simplement width = 70dp, height = 70dp. Et si vous le souhaitez, vous pouvez réduire la taille de l'icône en ajoutant un remplissage. J'ai édité ma réponse.
La syntaxe Picasso semble correcte, mais la logique de la méthode onCreateView est incorrecte
Veuillez essayer avec le code ci-dessous:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mView = inflater.inflate(R.layout.list_full, container, false); refreshIV = mView.findViewById(R.id.ivSynchroIcon); mobileArray = new ArrayList<IssuePOJO>(); dbStats.open(); generateList(); //mView = view;//please comment this one and try return mView; }
@SkypeDogg s'il vous plaît vérifier ma réponse
Vous êtes les bienvenus et merci d'avoir accepté la réponse, heureux de vous aider :)
où est
refreshIV
?J'ai édité ma question, mView est global pour ce fragment, donc je peux l'utiliser partout pour findViewById ()