Appcompat CardView et Picasso pas de Coins arrondis
Je ne sais pas où Exactement je Devrais Adresse cette question, si c'est de ma faute, il y a quelque chose dans le Picasso Lib Mal ou dans le Cardview Bibliothèque.
Bref j'ai un CardView
contenant une image (Carte Couverts) et Un TextView
superposition.
Lors de l'Exécution du Code sur un Android 5.0 Appareil, tout fonctionne bien et que l'Image Devient son Coins Arrondis.
Cependant, si je l'exécute sur un pré 5.0 de l'appareil, l'image chevauche le Cardlayout
et ne pas avoir des Coins arrondis.
Vous pouvez Voir une Comparaison sur cette Image:
Voici quelques Extraits de Code:
layout_row.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/pandaImage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/pandaName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/pandaImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@color/photo_tint"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="24sp" />
</RelativeLayout>
Et le Recycleur Adaptateur de Chargement de l'Image:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Photo p = photos.get(i);
Picasso.with(mContext).load(p.getUrl()).fit().into(viewHolder.mImage);
viewHolder.mPandaName.setText(p.getTitle());
}
- Qu'advient-il si vous réglez l'image comme fond pour la carte?
Vous devez vous connecter pour publier un commentaire.
Selon les docs, ce que conçue:
Voir le
CardView
docs pour plus d'info.CardView
et s'aligne avec l'ombre.. des idées à ce sujet?Comme @kcoppock mentionné, c'est par la conception.
Voici ce que je ferais dans cette situation.
1) Vous pouvez utiliser Picasso La Transformation interface pour spécifier la transformation personnalisée à votre image (dans notre cas - image avec des coins arrondis)
2) Appliquer cette transformation Picasso demande de pré-L périphériques
3) Depuis CardView ajoute une certaine marge pour l'image - se débarrasser de lui, sur la pré-L les appareils en appelant
setPreventOverlap(false)
De retour pour le code:
De transformation personnalisée:
Picasso:
setPreventOverlap(false)
est très important d'appeler à chaque fois que de traiter avec la carte de milieux. Très bon pour être mentionné ici.Il fonctionne pour moi comme ceci:
ImageView
avecRoundedImageView
(https://github.com/vinc3m1/RoundedImageView).riv_corner_radius
attribut sur laRoundedImageView
être le même queCardView
's corner.cardPreventCornerOverlap
à faux sur leCardView
(app:cardPreventCornerOverlap="false"
).Si vous souhaitez disposer d'une solution globale de la question, vous pouvez utiliser Carbone CardView. Correctement les clips de son contenu à des coins arrondis sur tous les appareils dos à Froyo. Voir l'image:
Utiliser le code ci-dessous.
Important: ne pas choisir la couleur de fond pour ImageView en XML.