У меня есть простое представление Android с двумя дочерними элементами, и я хочу выровнять по центру второе с родительским, без их наложения. С макетом ограничения мы можем сделать:
<!-- First view -->
app:layout_constraintTop_toTopOf="parent"
<!-- Second view -->
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
Когда два вида короткие, мы можем легко получить то, что хотим:
----------------
| -------- |
| |Text | |
| -------- |
| |
| ----------- |
- |Some text| -
| ----------- |
| |
| |
| |
| |
----------------
Но, поскольку оба вида могут быть произвольно высокими и мы не хотим, чтобы они перекрывались, второе представление должно смещаться вниз при необходимости:
----------------
| ----------- |
| |Text | |
| |Text | |
| |More text| |
| ----------- |
- ------------ -
| |Other text| |
| |Text | |
| ------------ |
| |
| |
----------------
Я пытался добавить layout_constraintTop_toBottomOf="@+id/first"
во второе представление, но это не работает. Добавление marginTop
с высотой первого вида также не работает, потому что это будет центрировать второй вид в оставшемся пространстве. Может ли это быть достигнуто с помощью макета ограничения (или другого макета)?
Я также попытался сделать это программно, изменив ограничение макета во втором представлении OnLayoutChangeListener
, но оно, похоже, не работает (все еще перекрывается) .
Буду признателен за любую помощь.