如何在约束布局(parent)中动态地添加线性布局(child)?

3
我定义了一个方法来创建线性布局并将其添加到父布局中,但是它没有起作用。我想我犯了错误。
    public void methodName() {
        LinearLayout linearLayout = new LinearLayout(MainActivity.this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        linearLayout.setLayoutParams(params);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);
        linearLayout.setBackgroundColor(Color.RED);
        ConstraintLayout main = (ConstraintLayout) findViewById(R.id.mainLayout);
        main.addView(linearLayout);
   }

你有收到任何异常吗? - lib4backer
我没有看到红色,但是它看起来根本不像线性布局! - user9405741
请发布mainLayout.xml的内容。 - Cao Minh Vu
几乎没有内容,只有一个浮动按钮。 - user9405741
很抱歉,我无法将其作为评论发布,因为它太长了。 - user9405741
1个回答

3
要将视图添加到ConstraintLayout中,您需要使用ConstraintSet添加约束条件。
在向约束布局添加动态视图时,与其他布局有些不同。 您需要像下面这样指定约束条件:
     ConstraintLayout main = (ConstraintLayout) findViewById(R.id.mainLayout);
     ConstraintSet set = new ConstraintSet();

     LinearLayout linearLayout = new LinearLayout(MainActivity.this);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
     linearLayout.setLayoutParams(params);
     linearLayout.setOrientation(LinearLayout.HORIZONTAL);
     linearLayout.setBackgroundColor(Color.RED);
     main.addView(linearLayout,0);
     set.clone(main);
     set.connect(linearLayout.getId(), ConstraintSet.TOP, main.getId(), ConstraintSet.TOP, 60);
     set.applyTo(main);

谢谢。你解决了我的问题。我只是将“layout”替换为“main”,并调整了边距。 - user9405741

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接