Ich habe Probleme beim Scrollen an den Anfang eines ListView in Xamarin Forms. Ich kann zum ersten Element blättern, indem ich ScrollTo aufrufe und das erste Element übergebe. Das Problem ist, dass, wenn die Liste ein Header-Element hat, ich keinen Weg finden kann, um zum Header zu blättern. Ist das möglich? Die einzige Arbeit, die ich mir vorstellen kann, ist, nicht die Kopfzeile zu verwenden und nur ein anderes Element am Anfang der ItemSource-Liste zu haben, das als Kopfzeile dient, aber ich würde lieber die Kopfzeile verwenden, wenn möglich. Vielen Dank.Scrollen zum Start von Xamarin Forms ListView mit Header
Antwort
Also ich habe das jetzt selbst gelöst. Meine Lösung bestand darin, ListView abzuleiten und eine öffentliche ScrollToTop-Methode hinzuzufügen, die beim Aufruf ein internes ScrollToTopRequestedEvent aufruft. Ich habe dann den ListViewRenderer auf jeder Plattform subclassiert und für das Ereignis registriert.
Im Android-Renderer rufe ich dann Control.SmoothScrollToPositionFromTop (0, 0), um nach oben zu scrollen.
In der iOS gerendert rufen ich Control.ScrollRectToVisible (neue CoreGraphics.CGRect (0, 0, 1, 1), wahr).
Wah alle Kredite @Gareth Wynn, Mann, das war cool thx. Auf jeden Fall hier ist der Code für alle zu verwenden, ändern Klassennamen und Namespace, iOS nicht enthalten, da für Android gleiche tun, nur Gareth Wynn Hinweis parallel Antwort mit:
NiftyListView.cs
GEMEINSAM:
using System;
using Xamarin.Forms;
namespace AppoMobi
{
public class NiftyListView : CListView
{
public event EventHandler EventScrollToTop;
//-------------------------------------------------------------------
public void ScrollToTop(bool animate=true)
//-------------------------------------------------------------------
{
//bool animate is not used at this stage, it's always animated.
EventScrollToTop?.Invoke(this, EventArgs.Empty);
}
}
}
ANDROID NiftyListView.Android.cs
:
using System;
using AppoMobi;
using AppoMobi.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using ListView = Xamarin.Forms.ListView;
[assembly: ExportRenderer(typeof(NiftyListView), typeof(NiftyListViewRenderer))]
namespace AppoMobi.Droid.Renderers
{
//-------------------------------------------------------------------
class NiftyListViewRenderer : ListViewRenderer
//-------------------------------------------------------------------
{
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
var view = (NiftyListView)Element;
if (view == null) return;
view.EventScrollToTop += OnScrollToTop;
}
//-------------------------------------------------------------------------------------------
public async void OnScrollToTop(object sender, EventArgs eventArgs)
//-------------------------------------------------------------------------------------------
{
Control.SmoothScrollToPositionFromTop(0, 0);
}
}
}
Hey, es ist toll, dass Sie den Code geteilt haben. Aus dem Gedächtnis denke ich, dass SmoothScroll für Listen mit einer großen Anzahl von Elementen ziemlich langsam ist. Ich tauschte es gegen eine andere Methode, aber ich erinnere mich nicht, was es war. Ich werde sehen, ob ich meinen Code ausgraben und auch posten kann. –
- 1. Xamarin Forms ListView Datenbindung
- 2. Xamarin Forms ListView onpressing Ereignis
- 3. Xamarin Forms Listview-Zeilenhöhe Falsche
- 4. Collapsable individuelle viewcell in Listview - Xamarin Forms
- 5. Implementieren von Xamarin Forms-Kontextaktionen
- 6. Xamarin Forms ListView ObservableCollection nicht aktualisieren
- 7. Xamarin Forms Listview in Scrollbildlauf nicht
- 8. Wie Anpassen von Xamarin Forms ListView SelectedItem ViewCell Sichtbarkeit?
- 9. Xamarin Forms - Zwei ListViews gestapelt
- 10. FindViewById auf Xamarin Forms?
- 11. Xamarin Forms Bild in ListView gibt app schlechte Leistung
- 12. ListView zum ausgewählten Element scrollen
- 13. Xamarin - Clearing-Listview-Auswahl
- 14. Zum Aktualisieren ziehen, funktioniert nicht auf ListView in Android Build mit Xamarin Forms
- 15. Verwenden von Grial UIKit mit Xamarin Forms
- 16. Xamarin Forms DataBinding Wont Update
- 17. Xamarin Forms XAML Layout Fragen
- 18. Xamarin Forms ListView Bilder manchmal Displays, manchmal nicht (UWP)
- 19. Android Widget mit Xamarin Forms?
- 20. Binding ReactiveList <T> zu ListView in Xamarin Forms
- 21. Hinzufügen des ausgewählten Datums zu Custom ListView in Xamarin Forms
- 22. Xamarin Forms - Holen Position des Artikels in Listview
- 23. Xamarin Forms SignaturePad
- 24. Xamarin Forms - Plugins.BLE - MvvmCross.Plugins.BLE
- 25. Xamarin Forms Aktionsleiste
- 26. Xamarin Forms Geräteausrichtung
- 27. Xamarin Forms - PDFTron
- 28. WebView in Xamarin Forms
- 29. Xamarin Forms Stacklayout StackOrientation.Horizontal
- 30. Xamarin Forms ToggleButton
Dank Gareth, die mich auf den richtigen Weg gebracht! Ich endete mit einer Aktion anstelle eines Ereignisses, aber das funktioniert perfekt;) – wislon
Können Sie bitte den Code zur Verfügung stellen? Ich bin Android Entwickler und Neuling in Xamarin :) – AlirezaXX
@ AlirezaXX bitte überprüfen Code in meiner Antwort unter –