Xamarin.Forms-SwipeView2

SwipeViewで幅の調整をしようと思ったら、思いのほか手こずってしまった。

SwipeItemを使った場合

サンプル等に掲載されているのは大体SwipeItemを使ったもの。
これに、テキストやIconImageなどが設定できるので、表示文字やビットマップが簡単に割り付けられるので、お手軽にスワイプ項目が取り付けられる。

ただSwipeItemの場合は幅の調整を行う手段がなかった。

以下、サンプルや自分で作成したもののイメージになる。


一番初めに作成したもの。高さを文字高さに合わせてみたやつ。

これは高さをちょっとだけ高くしたもの。なんとなく幅が小さくなったような。

これはXamarinFormのサンプルで出したもの。高さもあるのと2つ並んでいるので、これもなんとなく幅が短くなったような。

上記のものの幅を正確に測ってみたところ、どれも103ドットだった。
高さが多いものは目の錯覚かなにかで、幅が短く思えたのか。

SwipeItemのオープン時の表示に影響を及ぼすものとして、SwipeView.Thresholdがある。
確かにこの値を100以下に設定すれば、表示される幅は短くなる。

ちなみに50%にした場合はこんな感じになる。

半窓になったような感じで、想定しているものとは違っている。

その他色々探してみたのだがSwipeItemでの幅指定はできないことが分かった。

SwipeItemView

SwipeItemでできない項目については、SwipeItemViewで実装するようだ。
SwipeItemViewはContentViewの派生なので、1つの子要素を配置可能なので、そこに自分の望むUIを入れ込んでいくということになるのだろう。

XamarinFormのサンプルではStackLayoutを配置してUIを構築していたのだが、今回は単純にImageを配置してみた。


変更前後でこんな感じに変えてみた。

SwipeItemをSwipeItemViewに変更し、子要素としてImageを配置。Image側にアイコン(PNG)と背景色を設定するようにしてみた。

これを表示した場合は以下の様になる。

ビットマップの横幅が32ドットなので、上のスワイプ項目も32ドットになっている。
一応SwipeItemViewには幅を指定する項目もあるため、望む幅にすることも可能。

こちらは幅を64ドットに指定したもの。(実際は65だったが)

なお、アイコンの描画色が黒系でSwipeItemのものと異なるのは、オリジナルのソースイメージの塗りつぶしそのままで描画されているため。
SwipeItem(MenuItem).IconImageSourceで指定された場合は、選択・非選択での反転処理などを行うためなのか、背景色に依存して色を変更しているようだった。
Redだと白系統になるが、LightGreenだと黒系統で表示されていたので。

コメント

タイトルとURLをコピーしました