2012-12-23 3 views
7

Ho un'app per Android che necessita di alcune regolazioni se l'utente imposta la dimensione del font su extra large (tramite Impostazioni -> Display -> Dimensione carattere in 4.0 e versioni successive).Determinazione selezione dimensione font utente

Esiste un modo semplice per me dire che cosa preferenza dimensione del carattere dell'utente è

Aggiornato:
nel mio layout.xml devo linee simili a configurare un pulsante

android:textAppearance="?android:attr/textAppearanceMedium" 
android:textStyle="bold" 
android:typeface="sans" 

Si noti che non sto impostando direttamente la dimensione del carattere. Questo layout funziona e sembra buono in tutti i casi, ad eccezione dell'impostazione Extra Large. In tal caso, a causa delle limitazioni di spazio, fa sì che il testo del pulsante si sposti su 2 righe.

Il mio obiettivo è quello di fare una leggera modifica testo nel caso di Extra Large in modo che esso non va a capo

risposta

6

C'è un parametro FONT_SCALE si dovrebbe essere in grado di interrogare il sistema per. Non ho usato io stesso, ma immagino recuperare il suo valore sarebbe guardare un po 'come questo:

float fontScale = Settings.System.getFloat(context.getContentResolver(), Settings.System.FONT_SCALE) 

Tuttavia, vorrei anche sottolineare che di solito non si dovrebbe avere a che fare con questo valore direttamente. Al contrario, utilizza le unità sp per il contenuto testuale in modo da non doverti preoccupare di adeguarti alle dimensioni dei caratteri preferite dall'utente, ma lasciare che sia il sistema a gestirlo.

si riferiscono anche a: Why should we use sp for font sizes in Android?

+0

Buon punto per quanto riguarda sp, ma non rilevante, in questo caso, vedere le informazioni aggiornate in questione – Noah

+0

fontScale tornare 1.3 per ExtraLarge. Sarebbe bello trovare una costante per questo, ma posso usarlo per ora. – Noah

+0

Strano il tuo codice genera per me un 'SettingNotFoundException: font_scale', ma sono sicuro che il tuo e il mio codice sono corretti (Android 4.2.2) – rekire