有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过constraintSet以编程方式设置约束会导致视图消失

每当我连接两个小部件时,起始元素将不再显示。 不幸的是,我不知道这个问题的原因是什么。 ConstraintLayout myLayout已在另一个布局中膨胀

ConstraintLayout myLayout= getActivity().findViewById(R.id.myID);
myLayout.removeAllViews();

ConstraintSet constraintSet = new ConstraintSet();

CheckBox cb = new CheckBox(myLayout.getContext());
cb.setText("CHECKBOX");
cb.setId(View.generateViewId());

myLayout.addView(cb);

constraintSet.connect(cb.getId(),ConstraintSet.END,myLayout.getId(),ConstraintSet.END);
constraintSet.connect(cb.getId(),ConstraintSet.TOP,myLayout.getId(),ConstraintSet.TOP);

constraintSet.applyTo(myLayout);

共 (2) 个答案

  1. # 1 楼答案

    设置约束后显示,如下所示

        ConstraintLayout myLayout= findViewById(R.id.lo1);
        myLayout.removeAllViews();
    
        ConstraintSet constraintSet = new ConstraintSet();
    
        CheckBox cb = new CheckBox(myLayout.getContext());
        cb.setText("CHECKBOX");
        cb.setId(View.generateViewId());
    
    
        constraintSet.connect(cb.getId(),ConstraintSet.END,myLayout.getId(),ConstraintSet.END);
        constraintSet.connect(cb.getId(),ConstraintSet.TOP,myLayout.getId(),ConstraintSet.TOP);
    
        constraintSet.applyTo(myLayout);
        myLayout.addView(cb);
    
  2. # 2 楼答案

    我不会关注您的两个布局以及它们的交互方式,但通常情况下,您会添加一个视图并将其连接起来,如下所示:

    1. 创建文本视图
    2. 将视图添加到布局中
    3. 创建约束集
    4. 将布局约束(和ID)克隆到约束集cs.clone(layout)
    5. 建立联系
    6. 约束集应用于布局:constraintSet.applyTo(myLayout)

    此外,由于您正在从myLayout中删除所有视图,并且没有向其添加任何内容,因此您的布局将是空的。解决这个问题,然后再解决上面的问题