ConstraintLayout Center просматривает между собой - PullRequest
0 голосов
/ 03 декабря 2018

Как я могу установить вертикальный центр вида1 в вертикальный центр вида2 ???

val view1 = ConstraintLayout(context)
view1.layoutParams = ConstraintLayout.LayoutParams(100, 200)
view1.id = View.generateId()

val view2 = ConstraintLayout(context)
view2.layoutParams = ConstraintLayout.LayoutParams(50, 100)
view2.id = View.generateId()

layout.addView(view1)
lyout.addView(view2)

val cs = ConstraintSet()
cs.clone(layout)

//setting position of view1
cs.connect(view1.id, ConstraintSet.TOP, layout.paddingTop, ConstraintSet.TOP, 50)
cs.connect(view1.id, ConstraintSet.START, layout.paddingStart, ConstraintSet.START, 100)

//setting postion of view2
cs.connect() // ??? no option like "ConstraintSet.VERTICAL_CENTER"
cs.connect(view1.id, ConstraintSet.paddingEnd, view2.paddingStart, ConstraintSet.START, 100)
cs.applyTo(layout)

Что я должен написать в ConstraintSet для достижения макета, подобного этому:

 |------|
 |      |     |---|
 |      | - - |   |
 |      |     |---|
 |------|

1 Ответ

0 голосов
/ 03 декабря 2018

Обычно вы центрируете представление, применяя оба верхних + нижних ограничения (по центру по вертикали) или start + end (по центру по горизонтали) или оба.

Если вы хотите, чтобы view2 центрировался вертикально относительнона view1, вы можете сделать это с двумя connect() вызовами:

cs.connect(view2.getId(), ConstraintSet.TOP, view1.getId(), ConstraintSet.TOP);
cs.connect(view2.getId(), ConstraintSet.BOTTOM, view1.getId(), ConstraintSet.BOTTOM);

Конечно, есть и удобный метод, который вы можете использовать:

cs.centerVertically(view2.getId(), view1.getId());
...