首页 > 解决方案 > 使用 ConstraintSet 设置视图

问题描述

我的 ConstraintSet 属性有问题,我完成了约束布局,我希望它通过代码更改一些约束,但是当我创建新的 ConstraintLayout 并将上下文设置为“this”然后 setContentView(myLayout) 它是一个空白空间。如何让它显示我之前制作的布局?

onCreate()

      @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ConstraintLayout myLayout = new ConstraintLayout(this);
    setContentView(myLayout);
    setContentView(R.layout.activity_gr);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

标签: javaandroid

解决方案


如果您只想膨胀您在 xml 中创建的约束布局,通常只需执行以下操作:

 setContentView(R.layout.activity_gr);

没有别的。

如果您想以编程方式处理 ConstraintSets 和其他东西,可以这样做:

ConstraintLayout myLayout = new ConstraintLayout(this);
ConstraintSet constraints = new ConstraintSet();
constraints.clone(context, R.layout.activity_gr);
myLayout.setConstraintSet(constraints);
setContentView(myLayout);

clone()-call 的引擎盖下,布局被夸大了。请记住,这只保留布局的约束部分。

然后您可以以编程方式添加约束,例如:

constraints.connect(R.id.some_id, TOP, R.id.some_other_id, BOTTOM)

如果我正确地解释了您的问题,我认为您应该在 xml 中的 contraintLayout 上设置和标识,例如my_container

setContentView(R.layout.activity_gr);
ConstraintLayout layout = findViewById(R.id.my_container)
ConstraintSet constraints = new ConstraintSet();
constraints.clone(layout);
// Edit constraints of the constraints set
// Apply your new constraints to the inflated layout
constraints.applyTo(layout)

推荐阅读