Разные размеры на 2 устройствах, даже если я использую "dp"

У меня есть 2 планшета:

1 Samsung Android 3.0

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

1 Недорогое устройство, Android 2.3.3

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

Если я использую разные макеты для каждого размера экрана, оба устройства говорят, что они большие-длинные и mdpi, поэтому я не могу различить их, используя имена папок макета... Проблема в следующем:

Я использую TextView с textSize="20dp"

В первом устройстве ширина текста составляет половину экрана, во втором устройстве больше (80% ширины экрана). Почему? Я ожидаю, что оба устройства будут отображать текст одинаково, если я использую dp (а не px). Я пробовал также с sp, но ничего не меняется...

(Я использовал TextView в качестве примера, у меня такая же проблема со всеми элементами в макете: размеры кнопок, ...)

Я бы попытался использовать имена папок макета, такие как «layout-w600dp» или что-то еще, представленное в Android 3.2, но это не так.

Я знаю, что могу изменять размеры элементов с помощью кода в onLayout(), но я не хочу этого делать...

Есть предложения?

Обновление

Я решил свои проблемы с макетами с использованием тем: Активируйте определенные дименсы.xml во время выполнения

6
задан Community 23 May 2017 в 12:01
поделиться