In dimens.xml, ho:
<dimen name="text_medium">18sp</dimen>
In runtime, ottengo questo valore e imposto la dimensione del testo di una visualizzazione di testo:
int size = context.getResources().getDimensionPixelSize(R.dimen.text_medium);
textView.setTextSize(size).
Su un tablet da 10 ″ (1280 x 800) è tutto ok; ma su un telefono (800 x 480), la visualizzazione del testo ha un carattere molto grande. Sul tablet, la dimensione è pari a 18; al telefono sono 27.
Se imposto manualmente la dimensione tramite:
textView.setTextSize(size)
la dimensione è normale su entrambi i dispositivi.