Я хочу добавить неизвестное количество ImageView
просмотров в мой макет с полем. В XML я могу использовать layout_margin
так:
<ImageView android:layout_margin="5dip" android:src="@drawable/image" />
Есть ImageView.setPadding()
, но нет ImageView.setMargin()
. Я думаю, что это в порядке ImageView.setLayoutParams(LayoutParams)
, но не уверен, что подать в этом.
Кто-нибудь знает?
FrameLayout.LayoutParams
а может и с другими: stackoverflow.com/questions/5401952/…android:layout_centerHorizontal = "true"
иandroid:layout_alignParentBottom = "true"
каким образом я могу это сделать?источник
android:layout_centerHorizontal = "true"
иandroid:layout_alignParentBottom = "true"
каким образом я могу это сделать?Все приведенные выше примеры на самом деле ЗАМЕНЯЮТ любые параметры, уже присутствующие в View, что может быть нежелательно. Приведенный ниже код будет просто расширять существующие параметры, не заменяя их:
источник
Код Кевина создает избыточный
MarginLayoutParams
объект. Более простая версия:источник
Если вы хотите изменить поле изображения, но оставьте все остальные поля без изменений.
Получите MarginLayoutParameters вашего изображения в этом случае:
myImageView
Теперь просто измените поле, которое вы хотите изменить, но оставьте остальные как есть:
источник
Вы можете использовать этот метод, если вы хотите указать поля в dp:
источник
Я использую просто это и прекрасно работает:
Единица setMargins () - это пиксель, а не дп. Если вы хотите установить поле в dp, просто внутри вашего файла values / dimensions.xml создайте ваши измерения, например:
и доступ как:
источник
Если вы используете kotlin, это можно упростить, создав функцию расширения
Теперь все, что вам нужно, это представление, и эту функцию расширения можно использовать где угодно.
источник
left
иright
полей, но если у вас есть относительные поля (start
иend
), это не работает. Я написал суть «улучшенной» версии вашего кода: gist.github.com/Grohden/f40c53bf86c5395638f7a44bf90e732d (setMarginsRelative
функция) - не могли бы вы включить это в свой ответ?источник
Для меня это сработало:
источник
источник
Использование метода, подобного этому, может избавить вас от головной боли в некоторых ситуациях. Если у вас есть два прохода программной обработки полей, то безопаснее проверить, уже есть ли какие-либо установленные layoutParams. Если поля уже есть, их нужно увеличить, а не заменять:
источник
Вот пример, чтобы добавить 8px Margin слева, сверху, справа, снизу.
источник
Ответ от 2020 года:
и просто позвоните в ваш код
источник