Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9711

Xamarin.FormsでAndroidのデバイスの設定の影響でアプリのフォントサイズが変わらないようにする方法

$
0
0

はじめに

Androidは、下図のような画面で、デバイスのフォントサイズを変更できます。
これは、アプリのフォントサイズに影響するため、普通にXamarin.Formsでアプリを開発すると、フォントサイズがこの設定の影響で変わってしまいます。それを変わらないようにする方法の紹介です。

実装方法

Androidプロジェクトにある MainActivity.cs に以下のコードブロックを追加することで、デバイスのフォントサイズに影響しなくなります。

MainActivity.cspublicoverrideAndroid.Content.Res.ResourcesResources{get{Android.Content.Res.Resourcesres=base.Resources;Configurationconfig=newConfiguration();config.SetToDefaults();res?.UpdateConfiguration(config,res.DisplayMetrics);returnres;}}

ただし、上記で利用している Resources.UpdateConfigurationメソッドは、Android API 25(Android7.1)以上では、非推奨となっています。
詳しくは、以下に書いてあります。
Resources | Android Developers

従って、Android API 25(Android7.1)以降と、それより前で分岐して、別々の方法で実装する必要があります(自分で確認した限り、新しい方式の実装は、Android API 24(Android7.0)では、正しく動作しませんでした)。

publicoverrideAndroid.Content.Res.ResourcesResources{get{if(DeviceInfo.Version.Major<7||(DeviceInfo.Version.Major==7&&DeviceInfo.Version.Minor==0)){// Android API 24(Android7.0)以前は古い方式で実装Android.Content.Res.Resourcesres=base.Resources;Configurationconfig=newConfiguration();config.SetToDefaults();res?.UpdateConfiguration(config,res.DisplayMetrics);returnres;}else{// Android API 25(Android7.1)以降は新しい方式で実装varconfig=newConfiguration();config.SetToDefaults();returnCreateConfigurationContext(config)?.Resources;}}}

古い方式と新しい方式のそれぞれの実装方法は、以下の stack overflow の記事を参考にしています。
How to Prevent Device font size effect of Xamarin android app?

まとめ

Xamarin.FormsはC#でWindowsとAndroidとiOSのアプリがまとめて開発できて便利です。

ちなみに私は、普段はエンジニアリングマネージャーとして、チームの皆で楽しく開発する施策を色々実施しています。詳しくは以下を参照ください。
1年以上かけて生産性倍増+成長し続けるチームになった施策を全部公開

Twitterでも開発に役立つ情報を発信しています → @kojimadev


Viewing all articles
Browse latest Browse all 9711

Trending Articles