2013-05-14 10 views
11

のフォントサイズを読むこの質問はAndroid App: how to read Font Size under Settings?のほぼdublicateですSettings.System.FONT_SCALEを指すCommonsWareの回答を読んでいます。だから私は、この数行を書いた:設定から

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(); 

私の問題は、私はいつも私は、Android 4.2.2デバイスを使用していSettingNotFoundExceptionを得るということです。ところで、そのコードはonCreateコールバックActivityにあります。

私はまた、その問題を探って、同じコードを使用する約3つのサイトを発見しました。特別な許可が必要ですか?私も許可android.permission.WRITE_SETTINGSを試してみました。 getResources().getDisplayMetrics().scaledDensity

+0

ええと、私はあなたがこれを読む必要があるとは確信していません。 sp単位を使用している限り、システムはスケーリングを行いませんか? – Teovald

+0

確かに、スケールファクターで修正する必要のあるグラフィカルなバグがあります。 – rekire

答えて

27

:しかし、使用中FONT_SCALEはので、私はそのConfigurationクラスのチェックがあり

/** @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; 
    } 
} 

をどこドキュメントはgetResources().getConfiguration()を指しています。だから私はあなたのコードを修正して:

float scale = getResources().getConfiguration().fontScale; 
0

あなたは、おそらく使用することができます - 私はちょうどSettings.Systemのソースコードでは、この機能見つかっhttp://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity

+1

これは定数です。私のデバイス上ではいつも '1.33'です。私はその前に 'FONT_SCALE'を見つけました。 – rekire

+0

あなたはどのようなデバイスを持っていますか? Nexus 7を推測しますか? – FunkTheMonk

+0

ええ、Nexus 7はそれが既知のバグですか? – rekire

3

フォントのスケールに従ってシステムフォントを設定することができます。

例:巨大フォントのスケールが2.0の場合、次のように設定できます。

Configuration config = new Configuration(); 
config.fontScale = 2.0f; 
getResources().getConfiguration().setTo(config); 
0

(DEFフロート、ContentResolverのCRと、文字列名) のpublic staticフロートはgetFloatの終わりまでのparamを "DEFフロート"

例追加:

規模= android.provider.Settingsを.System.getFloat(getActivity()。getContentResolver()、 android.provider.Settings.System.FONT_SCALE、1f);

関連する問題