如何设置view1的垂直居中为view2的垂直居中???
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 中写些什么来实现这样的布局:
|------|
| | |---|
| | - - | |
| | |---|
|------|
最佳答案
通常,您通过应用顶部+底部约束(垂直居中)或开始+结束约束(水平居中)或同时应用两者来使 View 居中。
如果您希望 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());
关于android - ConstraintLayout 在彼此之间居中 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587083/