この質問はほとんど重複しています Androidアプリ:[設定]でフォントサイズを読み取る方法は? 私は CommonsWare の答えを読みましたSettings.System.FONT_SCALE
。だから私はこの数行を書いた:
float scale = -66.6f;
try {
scale = Android.provider.Settings.System.getFloat(getContentResolver(),
Android.provider.Settings.System.FONT_SCALE);
} catch(SettingNotFoundException e) {
Log.e(getClass().getSimpleName(), "Error: ", e);
}
Toast.makeText(this, "scale=" + scale, Toast.LENGTH_LONG).show();
私の問題は、常にSettingNotFoundException
を取得することですAndroid 4.2.2デバイスを使用しています。ちなみに、そのコードはonCreate
コールバックにありますActivity
の。
私もその問題をグーグルで検索し、同じコードを使用している約3つのサイトを見つけました。特別な許可が必要ですか?許可も試しましたAndroid.permission.WRITE_SETTINGS
成功せず。
_Settings.System
_ この関数のソースコードで見つけました:
_/** @hide */
public static void getConfigurationForUser(ContentResolver cr,
Configuration outConfig, int userHandle) {
outConfig.fontScale = Settings.System.getFloatForUser(
cr, FONT_SCALE, outConfig.fontScale, userHandle);
if (outConfig.fontScale < 0) {
outConfig.fontScale = 1;
}
}
_
ただし、使用中の_FONT_SCALE
_があるので、ドキュメントがgetResources().getConfiguration()
を指している Configuration
クラスを確認しました。だから私は以下を使ってコードを修正します:
_float scale = getResources().getConfiguration().fontScale;
_
フォントスケールに合わせてシステムフォントを設定できます。
例:巨大なフォントスケールが2.0の場合、次のように設定できます。
Configuration config = new Configuration();
config.fontScale = 2.0f;
getResources().getConfiguration().setTo(config);
「floatdef」パラメータを最後に追加します
public static float getFloat(ContentResolver cr, String name, float def)
例:
scale = Android.provider.Settings.System.getFloat(getActivity().getContentResolver(),
Android.provider.Settings.System.FONT_SCALE, 1f);