Почему одинаковая высота экрана не отображает элемент одинаково? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь сделать свое приложение корректным на экране любого размера. Я сделал много файлов измерений.

enter image description here

Я пробую файл xhdpi Dimensions с эмулятором Nexus 4 (768 * 1280) и Samsung A3 2016 - SMA310F (720 * 1280). У меня есть карта и две кнопки под картой. С samsung кнопки появляются, но с эмулятором карта слишком большая и кнопки исчезают.

У вас есть идеи, почему при одинаковой высоте размера экран другой? Я использую правильный метод?

Я пытался создать файл измерения large-xhdpi: нет доступа к нему.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Мало того, что Android устройства имеют разные размеры экрана, но их экраны также имеют разные размеры пикселей.

Чтобы создать отзывчивый пользовательский интерфейс, используйте ConstraintLayout . Этот макет имеет много функций, которые помогут вам создать удивительный и гибкий пользовательский интерфейс. Например, рекомендации (с процентной поддержкой), цепочки и многое другое.

Кроме того, вы можете установить собственные метрики для своей деятельности или представления, Я не думаю, что это хорошая практика, но все же хорошо Знайте, что это возможно, а в некоторых случаях это может быть полезно , проверьте это:

DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int dpi = 210; //for example
float scale = 1.10f; //for example
metrics.density = scale;
metrics.densityDpi = dpi;
metrics.scaledDensity = scale;
metrics.xdpi = dpi;
metrics.ydpi = dpi;
metrics.heightPixels = 480; //for example
metrics.widthPixels = 800; //for example
activity.getResources().getDisplayMetrics().setTo(metrics);

Удачи!

0 голосов
/ 06 января 2020

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

Решение:

Более простое решение - использовать атрибут веса вместе с LinearLayout для решения проблемы.

Для получения дополнительной информации перейдите по ссылке: Weight in linearlayout

...