Autore Topic: Dimensione del testo indipendente dalle impostazioni del dispositivo  (Letto 269 volte)

Offline Zampa

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 8
Ciao,
cercando un po' in internet ho trovato la funzione che riporto di seguito che mi permette di ottenere la dimensione del font in proporzione alla dimensione del display del dispositivo, così da avere il testo sempre delle stesse dimensioni rispetto alla dimensione della activity. Ho inserito tale funzione nella ApplicationClass, così tutte le View di tutte le Activity possono utilizzarla. Imposto la dimensione del testo della View nella onCreate della Activity.

Codice (Java): [Seleziona]
public static int getFontSize(Activity activity, float var) {
        DisplayMetrics dMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(dMetrics);

        final float WIDE = activity.getResources().getDisplayMetrics().heightPixels;
        int valueWide = (int)(WIDE / 32.0f / (dMetrics.scaledDensity));
        return (int) ((float)(valueWide*var));
}


@Override
protected void onCreate(Bundle savedInstanceState) {
        lblRecord = (ResizableHTextView) findViewById(R.id.lblRecord);
        lblRecord.setTextSize(ApplicationClass.getFontSize(this,3f));
}

Purtroppo però la setTextSize accetta un parametro in sp, quindi se l'utente nelle impostazioni di sistema sceglie la visualizzazione dei caratteri "grande" anzichè "media (o normale)" tutti i testi della mia applicazione vengono tagliati!!

C'è un modo per dire alla mia app di visualizzare i testi senza tener conto della dimensione del carattere scelto per il sistema?
Oppure, c'è un modo per impostare nella setTextSize un valore in dp anzichè in sp?
Oppure, che modifiche devo apportare alla getFontSize perchè converta il valore "var" che gli fornisco, nella corretta dimensione in sp?

Grazie,
Nicola