Xamarin.Forms でも UISegmentedControl を使いたい!
複数の項目を選択するとき iOS では UISegmentedControl をよく使うと思います.
UISegmentedControl – UIKit | Apple Developer Documentation
しかしながら、Xamarin.Forms には UISegmentedControl に対応するコントロールは用意されていません.
Embedding Native Controls into Xamarin.Forms | Xamarin Blog
Embedding Native を使えばネイティブコントロールを配置できますが、Android をどうするか.
Android を自前のカスタムコントロールで実装しようか迷っていたとき、ちょうど良さげなコントロールを見つけました.
iOS(iOS 8.1+)/Android(API 18+) に対応しています.
NuGet Gallery | Segmented Control for Xamarin Forms 1.2.4
NuGet から使えます.
<abstractions:SegmentedControl TintColor="Red"
SelectedSegment="{Binding SelectedSegment.Value, Mode=TwoWay}">
<abstractions:SegmentedControl.Children>
<abstractions:SegmentedControlOption Text="かばん" />
<abstractions:SegmentedControlOption Text="サーバル" />
</abstractions:SegmentedControl.Children>
</abstractions:SegmentedControl>
こんな感じに XAML で書けます.子要素も XAML で書けるのがいいですね.
TintColor=”Red” にするとこのように赤い SegmentedControl も作れます.ただ、この TintColor ですが Android ではバグがあります…
SegmentedControl/SegmentedControlImplementation.cs at master · alexrainman/SegmentedControl · GitHub
IsEnabled の変更通知をしなければ TintColor は変更されないようになっています.IsEnabled = false → IsEnabled = true みたいに変更してあげれば iOS と同じように赤い SegmentControl を作れます.
いちいち IsEnabled を変更するのもめんどくさいのでそのままの色で使うか、Fork して使うなりしたほうがいいかもしれません.
以上です.
ディスカッション
コメント一覧
まだ、コメントがありません