En dimens.xml, tengo:
<dimen name="text_medium">18sp</dimen>
En tiempo de ejecución, obtengo este valor y configuro el tamaño del texto de una vista de texto:
int size = context.getResources().getDimensionPixelSize(R.dimen.text_medium);
textView.setTextSize(size).
En una tableta de 10 ″ (1280 x 800), todo está bien; pero en un teléfono (800 x 480), la vista de texto tiene una fuente muy grande. En la tableta, el tamaño es igual a 18; en el teléfono, son 27.
Si configuro el tamaño manualmente mediante:
textView.setTextSize(size)
el tamaño es normal en ambos dispositivos.