Xamarin.Formsのダークテーマ対応でAppThemeBindingを使うようにした

以前のXamarin.Formsのダークモード検出にXamarin.EssentialsのAppInfo.RequestedThemeを使うようにしたXamarin.Formsでダークモード対応したをさらに改良。

端末のダークモード(ダークテーマ)に関わらず、モードを固定したいという要望があり。。

【やったこと】

1.イメージは、XAMLでAppThemeBindingで指定する。

というのも、iOSのアセットカタログ、Androidのdrawable-nightにリソースを作ると、アプリと端末のダークモードが違う場合にうまく切り替わってくれないので、ベタにResoucesに入れる。

これXamarin5.0からだっけ?

※Androidは、Activity#recreate()することで切り替えられるが、結局アプリ再起動?なので初期化処理に時間がかかる問題がある。

2.各プラットフォームにモードを設定するDependencyServiceを作る。

これしないとキーボードが端末側のモードで出ちゃうので。

(参考サイトを丸パクリ)

3.App.xaml.csで切り替え制御する。

テーマ制御は以前作ったのと同様。

4.設定画面で変更時に処理を呼び出す。

こんな感じ。設定画面のVMからAppのstaticメソッド呼び出しにした。

できた(∩´∀`)∩

【参考サイト】

ライブラリで勝手にお世話になってるkamu様→Xamarin.Forms で ダークモードにほぼ完全に対応し、「端末の設定を使う」にも対応する

MS公式→アプリケーションのシステム テーマの変更に Xamarin.Forms 対応する

 

 

1件のピンバック

コメントを残す

%d人のブロガーが「いいね」をつけました。