我正在尝试以编程方式将 View 添加到 ConstraintLayout
。问题在于 ConstraintLayout.LayoutParams
忽略了 MATCH_CONSTRAINT
和我的 View ,而不是让最大宽度居中。
TextView textView = new TextView(context);
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(MATCH_CONSTRAINT, WRAP_CONTENT);
lp.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
lp.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
lp.rightToLeft = guideline.getId();
lp.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID;
textView.setLayoutParams(lp);
textView.setText("Title text");
textView.setBackgroundColor(Color.BLUE);
constraintLayout.addView(textView);
最佳答案
textView = new TextView(this);
textView.setId(R.id.text_id);
ConstraintSet set = new ConstraintSet();
set.clone(constraintLayout);
set.connect(textView.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);
set.connect(textView.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0);
set.connect(textView.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 0);
set.connect(textView.getId(), ConstraintSet.RIGHT, guideline.getId(), ConstraintSet.LEFT, 0);
textView.setText("Title text");
textView.setBackgroundColor(Color.BLUE);
constraintLayout.addView(textView);
set.applyTo(constraintLayout);
ID 的 Xml 值
<item name="text_id" type="id"/>
关于android - 以编程方式约束布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494047/