Xamarin.Forms ListView: Legen Sie die Hervorhebungsfarbe eines angetippten Objekts fest
Mit Xamarin.Formenwie kann ich definieren, markieren Sie/hintergrund-Farbe des ausgewählten/tapped ListView-Element?
(Meine Liste hat einen schwarzen hintergrund und weiße Textfarbe, also die Standard Farbe für die Hervorhebung auf iOS ist zu hell. Im Gegensatz dazu, auf Android gibt es keine Hervorhebung bei allen - bis auf eine subtile horizontale graue Linie.)
Beispiel: (Links: iOS, rechts: Android; während Sie die Taste "Barn2")
InformationsquelleAutor der Frage Falko | 2014-09-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es so aus, eigentlich ein cross-Plattform-Weg, dies zu tun, das funktioniert auf iOS und Android (nicht sicher über Windows). Es nutzt nur verbindlich, und braucht keine custom-Renderern (das scheint selten). Dies ist ein mash-up von viel googeln, also danke an alle, die ich haben kann, entlehnt aus...
Ich gehe davon aus, dass ViewCells, aber diese Arbeit sollte für Text-oder Image-Zellen als auch. Ich bin nur mit den relevanten code hier jenseits der typischen text, Bild, etc.
Auf Ihrer Seite, die so etwas tun:
Ihr eigenes Modell könnte wie folgt Aussehen:
Dann für Ihre ItemTemplate müssen Sie eine benutzerdefinierte Zelle-Klasse so etwas wie dieses:
Dann in Ihre ItemSelected event-handler, tun die folgende. Beachten Sie, dass 'ausgewählt' ist eine Instanz von MyModel verwendet, um zu verfolgen das derzeit ausgewählte Element. Ich bin nur zu zeigen, Hintergrundfarbe hier, aber ich habe auch diese Technik verwenden, um reverse-markieren Sie den text und detail-text-Farben.
Habe ich screenshots von beiden iOS und Android-wenn jemand will, zu stoßen, mich auf 10 Punkte, so dass ich eigentlich posten 🙂
InformationsquelleAutor der Antwort Barry Sohl
In Android Bearbeiten Sie einfach Ihre Style.xml Datei unter Resources\Wert hinzufügen:
InformationsquelleAutor der Antwort mfranc28
iOS
Lösung:
Innerhalb einer benutzerdefinierten
ViewCellRenderer
können Sie dieSelectedBackgroundView
. Erstellen Sie einfach eine neueUIView
mit einer Hintergrundfarbe Ihrer Wahl, und Sie sind gesetzt.Ergebnis:
Hinweis:
Mit Xamarin.Formen scheint es wichtig zu sein, erstellen Sie eine neue
UIView
anstatt nur die Einstellung der Hintergrundfarbe der aktuellen Zeile.Android
Lösung:
Die Lösung fand ich auf Android ist ein bisschen komplizierter:
Erstellen Sie ein neues drawable
ViewCellBackground.xml
innerhalb derResources
>drawable
Ordner:Definiert solide Formen mit verschiedenen Farben für die Standard-Staat und der "gedrückten" Zustand des UI-Elements.
Nutzung einer geerbten Klasse für die
View
IhrerViewCell
z.B.:Implementieren einer benutzerdefinierten renderer für diese Klasse Einstellung hintergrund-Ressource:
Ergebnis:
InformationsquelleAutor der Antwort Falko
Ich habe einen ähnlichen Prozess, vollständig cross-Plattform, aber ich verfolge die Auswahl Stand mir und ich habe das getan in XAML.
Dann in der ItemTapped Veranstaltung
Wie Sie sehen können ich habe gerade die ListView.SelectedItem auf null zu entfernen, die Plattform-spezifische Auswahl von Stilen, die ins Spiel kommen.
In meinem Modell habe ich
InformationsquelleAutor der Antwort Adam Pedley
Ich hatte das gleiche Problem und habe es gelöst, sowie durch die Erstellung einer benutzerdefinierten renderer für iOS-wie Falko schon sagt, allerdings vermied ich es, die Stile, die änderungen für Android, ich habe einen Weg herausgefunden, um eine benutzerdefinierte renderer für Android als gut.
Es ist irgendwie funky wie die ausgewählten flag immer false für die android-Ansicht Zelle, die ist, warum ich hatte zum erstellen einer neuen privaten Eigentums zu verfolgen. aber außer, dass ich denke, dies ergibt eine geeignetere Muster, wenn Sie möchten, verwenden Sie den benutzerdefinierten Renderer für beide Plattformen, In meinem Fall habe ich es für TextCell aber ich glaube, es gilt genauso für andere CellViews.
Xamarin Forms
iOS
Android
InformationsquelleAutor der Antwort alexcons
Hier ist der Reine cross-Plattform und saubere Art und Weise:
1) Definieren Sie eine Aktion auslösen
2) Gelten die oben genannten Klassen eine Instanz als EventTrigger Aktion im XAML-Code wie unten
Vergessen Sie nicht, fügen Sie
xmlns:customTriggers="clr-namespace:CustomTriggers;assembly=ProjectAssembly"
Hinweis: Da keines der Elemente im ausgewählten Modus, Auswahl-styling wird nicht angewendet auf eine der Plattformen.
InformationsquelleAutor der Antwort Zafar Ameem
In Ordnung, um die Farbe des markierten Element, das Sie brauchen, um die Farbe des
cell.SelectionStyle
im iOS.Diesem Beispiel ist, um die Farbe des angezapft Element transparent.
Wenn Sie wollen, ändern können Sie es mit anderen Farben aus
UITableViewCellSelectionStyle
. Dies ist schriftlich in der Plattform-Projekt von iOS, indem Sie eine neue Benutzerdefinierte ListView-renderer in Ihre Forms-Projekt.Für android können Sie dieses Format in Ihre values/styles.xml
InformationsquelleAutor der Antwort Sawan Kumar Bundelkhandi
Fand diese schöne Möglichkeit der Verwendung von Effekten hier.
iOS:
Android:
Formen:
InformationsquelleAutor der Antwort Paul Charlton
Habe ich & verwenden Sie eine Lösung ähnlich wie @adam-pedley.
Keine custom Renderer in der xaml-ich Binde hintergrund ViewCell Eigenschaft
Im code (MVVM) - ich Speichere die lastitemselected durch eine boolToColor Converter update ich die hintergrund Farbe
Mein Beispiel ist extrahiert von einem listview-von Orten, die in einem Xamarin Forms Karten (gleiche contentpage).
Ich hoffe, diese Lösung wird nützlich sein für jemanden, der
InformationsquelleAutor der Antwort Luigino De Togni
Der einfachste Weg, dies zu erreichen auf android ist, indem Sie den folgenden code zu Ihrer benutzerdefinierten Stil :
@android:color/transparent
InformationsquelleAutor der Antwort Damien Doumer