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

У меня есть viewтого же размера, что и мой экран / фрагмент. Однако я хочу добавить отступ на левом и правом краях, чтобы на всех устройствах это поле выглядело одинакового размера. когда я использую:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingEnd="20dp">
....

Заполнение не одинаково на всех устройствах. На планшете он намного меньше, чем на маленьком телефоне. Есть ли способ программно установить равные отступы на всех устройствах?

и является dpдолжно быть независимым от плотности? Тогда почему на устройствах с разной плотностью заполнение установлено наdp не всегда визуально одинакового размера?

3 ответа

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

Кроме того, я добавляю статью более общего характера, которая может вам помочь.

Однако:

A. Попробуйте использовать другие единицы измерения, такие как миллиметры или дюймы, которые "зависят от физического размера экрана" ( см. Документацию).

Б. Возможно установить программно. То есть посчитайте, сколько пикселей / тд. нужно на каждом устройстве, чтобы на всех он выглядел одинаково (мм).

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, getResources().getDisplayMetrics());

Наконец, я не уверен, так ли это, но, как предполагают другие пользователи, возможно, это могло бы помочь. Еще раз, однако, я не совсем уверен, что это то, что вам нужно. В той же строке вы также можете определить размеры в зависимости от деталей устройства с квалификаторами (см. Здесь).

Вам нужно управлять разными файлами размеров для разных разрешений, пожалуйста, проверьте эту ссылку, вам просто нужно поместить свой параметр padings в sizes, а затем использовать из sizes.

Как определить размер.xml для каждого размера экрана в Android?

Как сказал здесь ответ

в API 21 заполнение не работает через XML, вы можете определить программно, как ссылка, которую я делюсь выше

но вы можете попробовать создать style="@style/RootLayoutWithPadding" используйте это на ваш взгляд

и внутри styles.xml Добавь это

<style name="RootLayoutWithPadding"> <item name="android:paddingLeft">@dimen/activity_horizontal_margin</item> <item name="android:paddingTop">@dimen/activity_vertical_margin</item> <item name="android:paddingRight">@dimen/activity_horizontal_margin</item> <item name="android:paddingBottom">@dimen/activity_vertical_margin</item> </style> для каждой набивки вы можете заполнить нужные размеры внутри values.xml

Надеюсь, это вам поможет:)

Другие вопросы по тегам