使用ConstraintSet设置视图

时间:2019-05-15 13:43:12

标签: java android

我对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);
}

1 个答案:

答案 0 :(得分:0)

如果您只是想膨胀在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()调用中,布局被夸大了。请记住,这只会保留布局的约束部分。

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

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

如果我正确解释了您的问题,我认为您应该在my_container之类的xml中的contointLayout上设置id并执行以下操作:

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)