Выровнять вид по центру, не перекрывая другие виды на Android - PullRequest
0 голосов
/ 29 марта 2020

У меня есть простое представление 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, но оно, похоже, не работает (все еще перекрывается) .

Буду признателен за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...