Xamarin.Forms ListView non mappable (supprimer l’effet d’ondulation de la sélection)

J’ai un ListView avec un ViewCell personnalisé qui affiche des articles. Toutefois, lorsque vous sélectionnez un élément, l’effet d’ondulation / de sélection de matériau est affiché.

Effet d'entraînement

Xaml:

      

Comment puis-je supprimer l’effet d’entraînement?

Mettre à jour:

Après quelques recherches, j’ai trouvé RepeaterView dans la bibliothèque XLabs. Cela fonctionne si vous l’enveloppez dans un ScrollView bien que cela enlève beaucoup de mécanique soignée de ListView telle que le rafraîchissement. De plus, il ne prend pas en charge les modifications apscopes à ItemSource à partir d’un thread externe. Je cherche toujours d’autres solutions puisque je sais que c’est possible dans Android natif.

Ainsi, après un long moment, nous avons compris, vous pouvez le réaliser avec un moteur de rendu personnalisé. Voici comment,

Tout d’abord, créez un fichier nommé no_selector.xml et placez-le dans le dossier Ressources / layouts (les propriétés de l’emballage doivent être définies sur AndroidResource).

     

Après cela, créez un moteur de rendu personnalisé pour le composant ListView,

 [assembly: ExportRenderer (typeof(ListView), typeof(NoRippleListViewRenderer))] namespace Your.Own.Namespace { public class NoRippleListViewRenderer : ListViewRenderer { protected override void OnElementChanged (ElementChangedEventArgs e) { base.OnElementChanged (e); Control.SetSelector (Resource.Layout.no_selector); } } } 

Si le fichier no_selector est introuvable, reconstruisez votre projet!

Sachez que cela supprime l’ondulation de toutes les ListViews de votre application. Si vous souhaitez uniquement cibler un couple, vous pouvez modifier le premier type sur l’atsortingbut ExportRenderer (pour cela, vous devez créer une classe séparée qui étend ListView).

https://gist.github.com/awatertrevi/d83787dbbf3de6ef0e0a344169d3c2fa

Je pense que vous pouvez le supprimer sans un moteur de rendu personnalisé.

Vous pouvez définir BackgroundColor de votre StackPanel sur gris ou quelle que soit la couleur d’arrière-plan de votre liste ou de votre page.

            

Ou vous pouvez utiliser les styles Android pour modifier les styles d’affichage de liste:

Définir le thème dans AndroidManifest.xml

  

Créer un thème dans styles.xml