Как работать с телефонами разного размера с использованием одного и того же квалификатора плотности - PullRequest
0 голосов
/ 09 июля 2020

Я создал приложение android и начал тестировать его на разных устройствах, но столкнулся с проблемой.

Мое приложение имеет множество размеров. xml для каждого квалификатора плотности, но пара телефонов, которые я использую (Huawei P20 pro и P9), оба используют размер xml из папки xxhdpi, но эти телефоны сильно различаются по физическому размеру / разрешению. Это означает, что на маленьком телефоне я получаю несколько перекрывающихся текстовых представлений, что не очень хорошо.

Текстовые строки определены в sp, а все поля - в dp. Сами текстовые представления сосредоточены на направляющих, которые определяются как процент от экрана.

Вот приблизительный набросок моего макета. Текстовые поля выделены красным и зеленым цветом, а тонкая синяя линия представляет собой рекомендации.

диаграмма

Есть ли какие-нибудь хитрые уловки, которые я могу использовать, чтобы обойти это? Единственное, что я могу придумать, это уменьшить размер текста и поля в размерах. xml, но тогда это ухудшает внешний вид на больших экранах (а это, вероятно, большинство).

В идеале я Мне понадобится какой-то лог c, который сообщает, если эти два представления перекрываются, уменьшите маржу до Xdp или измените этот процентный процент на X% et c.

EDIT Я использую макет ограничения, и в настоящее время нет ограничения между зеленым текстовым полем и нижним красным текстовым полем. Я могу ограничить нижнюю часть красного текстового представления до верха зеленого текстового представления; это устраняет перекрытие, но затем перетаскивает красный текст на большие экраны, что выглядит как мусор sh

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

вы должны использовать layout_constraintBottom_toBottomOf

ссылка https://developer.android.com/reference/androidx/constraintlayout/widget/ConstraintLayout

0 голосов
/ 09 июля 2020

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

Установите смещение этого ограничения на 0.

...