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
Надеюсь, это вам поможет:)