2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

2
Posted at

はじめに

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?