android - 以编程方式约束布局

标签 android android-constraintlayout

我正在尝试以编程方式将 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/

相关文章:

android - 如何在Android平台上使用OpenCV C++特定示例?

java - 在android中将信息传递给异步方法的最佳方式是什么?

android - 是否可以使用 constraintDimensionRatio 和高度/宽度 match_parent 绘制布局,同时将布局的顶部和底部限制为一点

android - Android Studio 4全屏按钮

android - HTML5 音频 blob 无法在 Android 上播放

android - 如何在运行时更改自定义 View 中的参数?

java - android应用程序内计费错误IInAppBillingService.aidl

android - 如何修复重叠的对象

android - 将两个 ConstraintLayout 带到 Button 前面

Android 将宽度设置为 ConstraintLayout.LayoutParams.MATCH_PARENT 给出 -1