2013-05-14 3 views
11

Diese Frage ist ein fast publicate von Android App: how to read Font Size under Settings? Ich lese die Antwort von CommonsWare, die auf Settings.System.FONT_SCALE zeigt. Also schrieb ich diese Zeilen:Lesen Sie die Schriftgröße von Einstellungen

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

Mein Problem ist, dass ich immer die SettingNotFoundException erhalte ich bin ein Android-4.2.2-Gerät. Übrigens ist dieser Code in einem onCreate Rückruf eines Activity.

Ich googelte auch für dieses Problem und fand etwa 3 Websites, die den gleichen Code verwendet. Ist eine spezielle Erlaubnis erforderlich? Ich habe auch die Erlaubnis android.permission.WRITE_SETTINGS ohne Erfolg versucht.

+0

hmm, ich bin mir nicht sicher, dass Sie das lesen müssen. Tut das System die Skalierung für Sie nicht, solange Sie Sp-Einheiten verwenden? – Teovald

+0

Gut, aber ich habe einige grafische Fehler, die ich mit diesem Skalierungsfaktor beheben muss. – rekire

Antwort

27

ich in den Quellcode Settings.System fand gerade diese Funktion:

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

Es besteht jedoch die FONT_SCALE in Benutzung so dass ich für diese Configuration Klasse überprüft, wo die Dokumentation zeigt auf getResources().getConfiguration(). So kann ich meinen Code reparieren mit:

3

Sie können Systemschriftart nach Schriftgröße einstellen.

Beispiel: Für große Schriftgröße ist 2,0 dann können Sie wie folgt einstellen.

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

hinzufügen "float def" param bis zum Ende des public static float getFloat (ContentResolver cr, name String, float def)

Beispiel:

scale = android.provider.Settings .System.getFloat (getActivity(). GetContentResolver(), android.provider.Settings.System.FONT_SCALE, 1f);

Verwandte Themen