android - ConstraintLayout 在彼此之间居中 View

标签 android android-constraintlayout

如何设置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/

相关文章:

android - (Robotium) 操作栏向上/主页按钮单击

java - 如何从手机发送 TCP 请求?

android - 一起使用 GridLayout 和 ConstraintLayout 时已经定义了属性 "orientation"

android - 如何在 ConstraintLayout 中将布局的所有内容置于中心

android - 将 coordinatorLayout anchor 与 constraintLayout 一起使用

android - 异步任务的空指针异常

android - 来自 developer.android.com 的示例代码 "FragmentBasic"无法正常工作

java - NullPointerException: SetOnClickListener(this) - Android

android - 从具有平面 View 层次 ConstraintLayout 的多个水平链创建垂直链

android - Android中的iOS StackView相当于什么