Ich habe eine gruppierte Listenansicht in Xamarin Formen für iOS, Android und Windows-Plattform entwickelt. Die vertikale Indizierung (Sprungliste) wird automatisch in IOS angezeigt, wenn ich die GroupShortNameBinding-Eigenschaft in meiner Listenansicht festlege. Aber die Sprungliste erscheint nicht in Android. Wie bekomme ich die Unterstützung der vertikalen Indizierung in Android und Windows auch mit benutzerdefinierten Rendering. Wenn jemand die Quelle für benutzerdefiniertes Rendering bereitstellen kann, unterstützt diese Funktion plattformübergreifend.Xamarin: Vertikale Alphabet Indexierung (Sprungliste) für gruppierte Liste in Xamarin Formen für Android und Windows UWP
Antwort
Der einfachste Weg ist XAML-Hack zu haben, wenn Sie CustomRenders nicht wollen.
Sie können Ihr ListView in ein RelativeLayout mit der Höhe und Breite des übergeordneten Elements (Inhaltsseite) einbinden.
Für die Listenansicht verwenden Sie die Höhe als übergeordnetes Element und die Breite 90% des übergeordneten Elements. Fügen Sie ein Stapellayout der Breite 10% hinzu und beginnen Sie bei 90% des relativen Layouts mit der Höhe als Parent. Orientiere dich vertikal. Fügen Sie dem Stapellayout alle Alphabete als Etiketten hinzu und implementieren Sie die entsprechende Position TapGesture bis ScrollTo.
Machen Sie die Breite 90% für Android nur für iOS und Windows behalten Sie es als 100%, Stapellayout Breite als 0% und IsVisible=false
.
Ansichtsmodell:
public class JumpListViewModel : INotifyPropertyChanged
{
private ObservableCollection<Item> _allItems;
private List<string> _alphabetList;
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public JumpListViewModel()
{
AllItems = new ObservableCollection<Item>(new List<Item> { new Item { MyText = "1" }, new Item { MyText = "2" }, new Item { MyText = "3" } });
AlphabetList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray().Select(x => x.ToString()).ToList();
}
public ObservableCollection<Item> AllItems
{
get { return _allItems; }
set
{
_allItems = value;
OnPropertyChanged();
}
}
public List<string> AlphabetList
{
get { return _alphabetList; }
set
{
_alphabetList = value;
OnPropertyChanged();
}
}
}
Ausblick:
<RelativeLayout VerticalOptions="FillAndExpand">
<ListView VerticalOptions="FillAndExpand" HasUnevenRows="True" ItemsSource="{Binding AllItems}"
SeparatorColor="Transparent" SeparatorVisibility="None" BackgroundColor="Transparent"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=1}">
<RelativeLayout.WidthConstraint>
<OnPlatform x:TypeArguments="Constraint" Android="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=0.9}"
iOS="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1}"
WinPhone="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=1}" />
</RelativeLayout.WidthConstraint>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout HorizontalOptions="FillAndExpand" BackgroundColor="Silver">
<Label Text="{Binding MyText}" />
<Button Text="button" />
<BoxView HeightRequest="1" Color="Gray" BackgroundColor="Gray" HorizontalOptions="FillAndExpand" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="FillAndExpand" HasUnevenRows="True" ItemsSource="{Binding AlphabetList}"
SeparatorColor="Transparent" SeparatorVisibility="None" BackgroundColor="Transparent"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.9}"
RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.05}"
RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=0.9}">
<RelativeLayout.WidthConstraint>
<OnPlatform x:TypeArguments="Constraint" Android="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=0.1}"
iOS="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=0, Constant=0}"
WinPhone="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=0, Constant=0}" />
</RelativeLayout.WidthConstraint>
<ListView.IsVisible>
<OnPlatform x:TypeArguments="x:Boolean" WinPhone="False" iOS="False" Android="True" />
</ListView.IsVisible>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}" TextColor="Red" FontSize="Micro" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</RelativeLayout>
Screenshot von Android:
- 1. App.AppName in Xamarin Formen
- 2. Xamarin UWP-Werkzeugleiste
- 3. Windows UWP Entwicklungsprobleme (Windows 10 Emulator und Xamarin)
- 4. Verwendung von ZeroMQ in Xamarin für Windows, iOS und Android
- 5. Genymotion Android Emulator für Xamarin
- 6. Xamarin Formen Bindung Label
- 7. Xamarin Formen Messaging-Plugin
- 8. xamarin Formen arbeiten mit mvvmcross
- 9. Wie Hintergrundbild zu einem Eintrag in Xamarin Formen für IOS
- 10. Xamarin UWP benutzerdefinierte CommandBar
- 11. Barcode Scannen in Xamarin Formen
- 12. Xamarin Formen - XLabs CustomRadioButton: ItemsSource
- 13. Schließen Xamarin Formen Navigation Schublade
- 14. Xamarin Formen wp81 Statusleiste Hintergrundfarbe
- 15. Installieren Xamarin Mono für Android
- 16. Xamarin mit UWP - "FileNotFound_AssemblyNotFound, ClrCompression"
- 17. Xamarin Formen Fehler Droid.Resource enthält keine Definition für Zeichenfolge
- 18. CoAP.NET für Xamarin
- 19. Xamarin Formen Splash-Screen-Problem
- 20. Wie überlappen sich Xamarin-Formen?
- 21. Xamarin Formen ändern SwichCell Text Farbe
- 22. unterstützt Xamarin CoreBluetooth für iOS?
- 23. Setzen Tastatur numerisch in XAML - Xamarin Formen
- 24. SwipeListView in Xamarin Form
- 25. AWS Cognito für Xamarin
- 26. Wie Sie Emojis von Android-Tastatur in Xamarin Formen deaktivieren?
- 27. Xamarin Formulare - UWP Zurück Button?
- 28. Gemeinsame Codebasis für C# .NET und Xamarin Mobile Apps?
- 29. Anwendung Hintergrund Daten Synchronisierungsdienst in Xamarin Formen
- 30. Wie erreichen kreisförmige Layout in Xamarin Formen
ich versuchen, einige Beispiel-Code bald hinzuzufügen. –
Vielen Dank, ich werde versuchen, dies zu implementieren. –
hast du das beispiel jetzt? – Prageeth