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

実装方法
Androidプロジェクトにある MainActivity.cs に以下のコードブロックを追加することで、デバイスのフォントサイズに影響しなくなります。
MainActivity.cs
public override Android.Content.Res.Resources Resources
{
get
{
Android.Content.Res.Resources res = base.Resources;
Configuration config = new Configuration();
config.SetToDefaults();
res?.UpdateConfiguration(config, res.DisplayMetrics);
return res;
}
}
ただし、上記で利用している Resources.UpdateConfigurationメソッドは、Android API 25(Android7.1)以上では、非推奨となっています。
詳しくは、以下に書いてあります。
Resources | Android Developers
従って、Android API 25(Android7.1)以降と、それより前で分岐して、別々の方法で実装する必要があります(自分で確認した限り、新しい方式の実装は、Android API 24(Android7.0)では、正しく動作しませんでした)。
public override Android.Content.Res.Resources Resources
{
get
{
if (DeviceInfo.Version.Major < 7 ||
(DeviceInfo.Version.Major == 7 && DeviceInfo.Version.Minor == 0))
{
// Android API 24(Android7.0)以前は古い方式で実装
Android.Content.Res.Resources res = base.Resources;
Configuration config = new Configuration();
config.SetToDefaults();
res?.UpdateConfiguration(config, res.DisplayMetrics);
return res;
}
else
{
// Android API 25(Android7.1)以降は新しい方式で実装
var config = new Configuration();
config.SetToDefaults();
return CreateConfigurationContext(config)?.Resources;
}
}
}
古い方式と新しい方式のそれぞれの実装方法は、以下の stack overflow の記事を参考にしています。
How to Prevent Device font size effect of Xamarin android app?
まとめ
Xamarin.FormsはC#でWindowsとAndroidとiOSのアプリがまとめて開発できて便利です。
ちなみに私は、普段はエンジニアリングマネージャーとして、チームの皆で楽しく開発する施策を色々実施しています。詳しくは以下を参照ください。
1年以上かけて生産性倍増+成長し続けるチームになった施策を全部公開
Twitterでも開発に役立つ情報を発信しています → @kojimadev