У меня есть простой макет с двумя кнопками и изображением, содержащимся в ConstraintLayout. Представление изображения показывает векторную графику и находится между двумя кнопками по горизонтали.
____________
| Button |
------------
____________
| ImageView |
------------
____________
| Button |
------------
Проблема в том, что я не могу понять, как правильно ограничить изображение по вертикали между двумя кнопками.
Пока у меня layout_width и layout_height для представления изображения установлены на wrap_content
, результат будет варьироваться в зависимости от соотношения сторон дисплея устройства. Я мог бы установить жестко заданные значения высоты и ширины, но это также кажется плохой идеей.
Нет ли способа динамически изменять размер ImageView на основе ограничений?
<ImageView
android:id = "@+id/imageView"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:src = "@drawable/image"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@id/buttonTop"
app:layout_constraintBottom_toTopOf = "@id/buttonBottom"/>
Это работает на устройствах с высоким соотношением сторон, но на маленьких нижняя и/или верхняя кнопки перекрывают изображение.
Установить изображение
android:layout_height = "0dp"
app:layout_constraintTop_toBottomOf = "@id/buttonTop"
app:layout_constraintBottom_toTopOf = "@id/buttonBottom"
высота будет регулироваться в зависимости от размера устройства
Вы должны установить размер макета ImageView
на match_constraint
.
Просто установите layout_width
и layout_height
на 0dp
. Таким образом, размер макета будет настолько большим, насколько позволяют установленные ограничения.
<ImageView
android:id = "@+id/imageView"
android:layout_width = "0dp"
android:layout_height = "0dp"
android:src = "@drawable/image"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@id/buttonTop"
app:layout_constraintBottom_toTopOf = "@id/buttonBottom"/>
я думаю, что ширина вашего макета должна быть 0dp (соответствовать ограничениям).