Итак, это должно быть довольно просто, но я новичок в Kotlin. Таким образом, у меня есть ImageView
в представлении RelativeLayout
.
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/moon_0"
android:id="@+id/imagen_luna"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true" />
Дело в том, что при определенных условиях это ImageView
может визуально сталкиваться с другим элементом, поэтому мне нужно изменить свойства marginStart
и marginEnd
. В некоторых руководствах я видел, что сначала я должен получить текущие поля макета или что-то подобное, но я не уверен, почему это так сложно, в Swift я просто изменяю свойства каждого поля.
Есть ли простой способ достичь этого или, если нет, то какой будет самый простой способ сделать это?
ОБНОВЛЕНИЕ - Добавлен код в адаптере
Это код, который у меня есть в моем адаптере для этого конкретного ImageView
:
override fun onBindViewHolder(holder: AnoViewHolder, position: Int) {
...
if(respec.nombre_icono_signo != "" && respec.imagen_luna != "") {
val layoutParamsLuna = holder.view?.imagen_luna.layoutParams as RelativeLayout.LayoutParams
layoutParamsLuna.setMargins(1, 8, 15, 8)
holder.view?.imagen_luna.layoutParams = layoutParamsLuna
}
...
}
Дело в том, что это ничего не делает, и моя теория состоит в том, что функция setMargins принимает левые и правые поля, а не начальные и конечные поля.