有 Java 编程相关的问题?

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

java如何将线性布局(作为子布局)动态添加到约束布局(父布局)?

我定义了一个方法来创建线性布局并将其添加到父布局。但它不起作用。我想我犯了个错误

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

共 (1) 个答案

  1. # 1 楼答案

    要将视图添加到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);