ios、androidとwindowsプラットフォーム用のXamarinフォームでグループ化リストビューを設計しました。リストビューでGroupShortNameBindingプロパティを設定すると、垂直インデックス(ジャンプリスト)がIOSに自動的に表示されます。しかし、ジャンプリストはアンドロイドには表示されません。カスタムレンダリングを使用して、アンドロイドとウィンドウで垂直インデックスのサポートを得るにはどうすればよいですか。誰でもこの機能をクロスプラットフォームでサポートするカスタムレンダリングのソースを提供できる場合。Xamarin:AndroidとWindows用のXamarinフォームのグループ化されたリストのための垂直アルファベットインデックス(ジャンプリスト)UWP
3
A
答えて
3
最も簡単な方法は、あなたがCustomRendersをしたくない場合は、XAMLのハックを持つことです。
高さと幅が親(コンテンツページ)と等しいRelativeLayoutにListViewをラップできます。
リストビューでは、高さを親として使用し、幅は親の90%を使用します。 高さが親である相対レイアウトの幅10%から90%で始まるスタックレイアウトを追加します。その向きを垂直にします。すべてのアルファベットをラベルとしてスタックレイアウトに追加し、TapGesture〜ScrollToの特定の位置を実装します。
iOSの場合のみAndroidの幅を90%にし、ウィンドウを100%、スタックレイアウトの幅を0%、IsVisible=false
とします。
のViewModel:
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();
}
}
}
ビュー:アンドロイドから
<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>
スクリーンショット:
関連する問題
- 1. ジャンプリストとWindowsフォーム
- 2. Xamarinフォーム:UWPとWindows 8.1のカスタムフォント
- 3. SQL垂直グループ化
- 4. Xamarinフォーム - ネストされたリストの実装
- 5. ggplot2グループ化された散布図のデータポイントからの垂直線
- 6. ネストした表のセットアップタイトルと垂直リスト
- 7. のLINQ:グループ化された選択リスト
- 8. Xamarinフォーム:UWPとwin8.1用のカスタムプログレスバーレンダラー
- 9. UWPアプリケーションの垂直マルチレベルナビゲーションメニュー
- 10. UWP Xamarinフォームを使用したカスタムレンダラー
- 11. ジャンプリスト - UWPアプリ
- 12. スクロール時の垂直フルハイトdiv間のアニメーション化されたスイッチ
- 13. UITableViewのローカライズされたアルファベットインデックスを表示
- 14. 垂直にネストされたデータフレーム内のリスト要素を合計
- 15. libGDXのラップされた垂直スクロールアルファベット
- 16. UWP ObservableCollectionのソートとグループ化
- 17. グループ化されたハイチャートのグループ化されたグラフ - グループ化された看護援護者のプラグイン
- 18. GUI:TkInterを使用した任意の要素の垂直リスト
- 19. Xamarin-Windows 10 UWPプロジェクトのエラー
- 20. XamarinフォームのテキストをUWPで
- 21. Javaストリーム - キーがリストに表示されたときのグループ化
- 22. UWPで垂直方向のリストビューを垂直方向に適用する方法
- 23. グループ化されたUITableView内のセクション間の垂直方向のスペースを削除します
- 24. XamarinフォームUWP PageRenderer
- 25. 要素(またはdiv)の垂直方向に配置されたリスト - AngularJS
- 26. イメージのホバー上に垂直にセンタリングされ、アニメーション化されたアイコン
- 27. XamarinフォームiOSとAndroid用のカスタマイズされたカメラ
- 28. リストによるLINQグループとグループ化された各プロパティの最初/最後
- 29. xamarin androidのグループ化
- 30. フォーム内の垂直整列フィールドと値
私はすぐにいくつかのサンプルコードを追加しようとします。 –
ありがとう、私はこれを実装しようとします。 –
サンプルがありますか? – Prageeth