在 ConstraintLayout 中看不到我以编程方式添加的文本视图

Can't see my programmatically added textviews in ConstraintLayout

我在代码中的 ConstrainLayout 中添加了 2 个文本视图,但我看不到它们。 屏幕是空的。 请有人能帮我弄清楚这个吗? 非常感谢!

public class ActivitySixth extends AppCompatActivity {
    private TextView tv1;
    private TextView tv3;
    private ConstraintLayout mConstraintLayout;
    private static final int ID_CONS_LAY = 160;
    private static final int ID_TV1 = 160;
    private static final int ID_TV3 = 160;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sixth);

        mConstraintLayout = findViewById(R.id.parent_Constraint);
        ConstraintSet set = new ConstraintSet();
        set.clone(mConstraintLayout);

        tv1 = new TextView(this);
        tv3 = new TextView(this);

       tv1.setText("TextView number ONE");
       tv3.setText("TextView number THREE");

       tv1.setId(ID_TV1);
       tv3.setId(ID_TV3);

       mConstraintLayout.addView(tv1);
       mConstraintLayout.addView(tv3);

       set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
       set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
       set.applyTo(mConstraintLayout);
}

}

您好,请按照下面的代码

        ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.mainConstraint);
    ConstraintSet set = new ConstraintSet();

    ImageView view = new ImageView(this);
    layout.addView(view, 0);
    set.clone(layout);
    set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60);
    set.applyTo(layout);
TextView contactUs = new TextView(this);
contactUs.setText(R.string.contactus);
contactUs.setTextSize(25);
contactUs.setId(R.id.contactUs);

ConstraintLayout.LayoutParams clpcontactUs = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
contactUs.setLayoutParams(clpcontactUs);

constraintLayout.addView(contactUs);

ConstraintSet set = new ConstraintSet();
set.clone(mConstraintLayout);

set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
set.applyTo(mConstraintLayout);

试试这样的东西..

参考。 http://www.zoftino.com/adding-views-&-constraints-to-android-constraint-layout-programmatically

首先,IDs 应该不同,其次,您需要为 TextViews 添加约束' width/height:

    set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
    set.constrainWidth(tv1.getId(), WRAP_CONTENT);
    set.constrainHeight(tv1.getId(), WRAP_CONTENT);
    set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
    set.constrainWidth(tv3.getId(), WRAP_CONTENT);
    set.constrainHeight(tv3.getId(), WRAP_CONTENT);
    set.applyTo(mConstraintLayout);

顺便说一句,为了避免冲突,您可以使用资源定义ids xml。

  1. 在您的 res\values 文件夹中创建 ids.xml

  2. 定义 ID:

    <resources>
        <item type="id" name="textView1" />
    </resources>
    
  3. 使用定义的id:

    R.id.textView1