kamulog

xamarin.formsのネタなど

Xamarin.FormsでTimePickerやDataPickerを付加したりEditorにPlaceholderを表示したりSwitch・Sliderなんかの色を無理やり変更したりするEffect

とりとめのないタイトルですみません。 Effect作成に飽きてきたので、残っている手持ちのEffectをまとめて追加しました。

リポジトリ

github.com

Nuget

www.nuget.org

Install-Package AiForms.Effects

nuget経由で使う場合はiOSのAppDelegate.csの
global::Xamarin.Forms.Forms.Init(); の後に
AiForms.Effects.iOS.Effects.Init();
の記述が必要です。

TimePikcer

概要

任意のViewにTimePickerを追加するEffectです。 NumberPickerとほとんど同じですね。

パラメータ

  • On
    • EffectのOn・Off
  • Time
    • 時間 (default twoway binding)
    • bindingすると選択した時間がセットされる。初期値にも使用される。
  • Title
    • Pickerのタイトル文字列(任意)
    • iOSの場合は長すぎ注意
  • Command
    • 時間を選択した時に発火するコマンド(任意)
    • CommandParameterには選択された時間が入る

DatePicker

概要

任意のViewにDatePickerを追加するEffectです。 これもNumberPickerと同じです。

パラメータ

  • On
    • EffectのOn・Off
  • MinDate
    • 選択可能な最大の日付(任意)
    • この日まで選択できる
  • MaxDate
    • 選択可能な最小の日付(任意)
    • この日まで選択できる
  • Date
    • 日付 (default twoway binding)
    • bindingすると選択した日付がセットされる。初期値にも使用される。
  • TodayText
    • 今日の日付を選択するボタンのタイトル文字列(iOSのみ有効)
    • このプロパティがセットされていると、今日を選択するためのボタンが表示され、タップすると今日を選択する。
  • Command
    • 日付を選択した時に発火するコマンド(任意)
    • CommandParameterには選択された日付が入る

Placeholder

概要

Editorにはplaceholderを設定できないので、それを設定できるようにしたもの。

パラメータ

  • On
    • EffectのOn・Off
  • Text
    • placeholderの文字列。
  • Color
    • Placeholderの文字色。

AlterColor

概要

通常はForms上からは変えられない色を変更するEffectです。 これは

ResourceDictionaryとEffectsを使ってFormsのThemeの切り替えだけで変えられない色も含めて強引に切り替えるサンプル - kamulog

の色変更Effectをほぼそのまま追加したものです。

パラメータ

  • On
    • EffectのOn・Off
  • Accent
    • 変更する色。

どの色が変わるか

適用するview iOS Android 色が変わる部分
Page Statusbar
Slider バー部分とつまみ(Android
Switch バー部分とつまみ(Android
Entry 下線のところ
Editor 下線のところ

終わりに

今回はソースコードの解説は無いですが、例えばPicker3兄弟のソースはPickerをカスタマイズする上での参考になるかもしれませんので、興味のある方は見てみてください。

これで自開発のアプリに使っていて汎用化できそうなものは全て出しました。なのでAiForms.Effectsに関してはしばらくはバグ修正のみになると思います。こんなのが欲しいというリクエストがありましたら@muak_xに投げて貰えたら、気が向いた時に作るかもしれません。

次はRendererをパッケージ化したいと思うのですが、Rendererはニッチなものになりがちで汎用化が難しいですね。 その前にiOSではUITableView、AndroidではListViewをゼロから実装する修行をせねばです。