Diferentes tamaños en 2 dispositivos, incluso si utilizo "dp"

Tengo 2 tabletas:

1 Samsung Android 3.0

DisplayMetrics {density=1.0, width=600, height=976, scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021} 

1 dispositivo de bajo costo, Android 2.3.3

  DisplayMetrics {density=1.0, width=480, height=800, scaledDensity=1.0, xdpi=160, ydpi=160.42105} 

Si utilizo un diseño diferente para cada tamaño de pantalla, ambos dispositivos dicen que son grandes y largos y mdpi, por lo que no puedo distinguirlos mediante el uso de nombres de carpeta de diseño … El problema es:

Utilizo un TextView con textSize = "20dp"

En el primer dispositivo, el ancho del texto es la mitad de la pantalla, en el segundo dispositivo es más grande (80% del ancho de la pantalla). ¿Por qué? Espero que ambos dispositivos muestren texto de la misma manera si uso dp (y no px). He intentado también con sp pero nada cambia …

(He utilizado TextView como ejemplo, tengo el mismo problema con todos los elementos en el diseño: tamaños de los botones, …)

Intentaría usar nombres de carpeta de diseño como "layout-w600dp" o algo más introducido en Android 3.2, pero este no es el caso.

Sé que puedo cambiar las dimensiones del elemento por código en onLayout () pero no quiero hacer eso …

¿Cualquier sugerencia?

Actualizar

He resuelto mis problemas con diseños usando temas: Activar una dimens.xml específica en tiempo de ejecución

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.