gpt4 book ai didi

android - 以编程方式设置 ConstraintLayout 宽度以匹配父宽度

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:52 25 4
gpt4 key购买 nike

在 android 应用程序中,我试图以编程方式将自定义的 ConstraintLayout View 添加到垂直方向的 LinearLayout

我在 ConstraintLayout 中将 LayoutParams 的宽度设置为 MATCH_PARENT,将高度设置为 WRAP_CONTENT。但是,当我运行该应用程序时,ConstraintView 全部被揉成一团并且内容重叠。下面是一些相关的 fragment 和我的应用程序的屏幕截图。我该如何解决这个问题?

public class ItemView extends ConstraintLayout {
LinearLayout linearButtons;
LinearLayout linearText;
public ItemView(Context context, String name, String price, ArrayList<String> guests,
ArrayList<String> checked, int id) {
...
addView(linearText);
addView(linearButtons);
set.clone(this);
set.connect(linearText.getId(), ConstraintSet.LEFT, this.getId(),
ConstraintSet.LEFT, 8);
set.connect(linearText.getId(), ConstraintSet.TOP, this.getId(),
ConstraintSet.TOP, 8);
set.connect(linearButtons.getId(), ConstraintSet.RIGHT, this.getId(),
ConstraintSet.RIGHT, 8);
set.connect(linearButtons.getId(), ConstraintSet.TOP, this.getId(),
ConstraintSet.TOP, 8);
}

别处:

for (Item it:r.getItems()) {
ItemView itemView = new ItemView(this, it.getName(), nf.format(it.getPrice()), dinerlist, it.getGuests(), i);
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT);
itemView.setLayoutParams(params);
vg.addV[enter image description here][1]iew(itemView);
Log.d("ItemView Children: ", itemView.getWidth()+" "+itemView.getHeight());

最佳答案

在 xml 中的 ConstraintLayout 中,当您想要“MATCH_PARENT”宽度时,必须将宽度设置为 0dp,然后将 layout_constraintWidth_default 属性设置为“spread”

您可以通过编程方式执行相同的操作:

a) 设置 0 dp 宽度和高度

b) 设置 defaultWidth 和 defaultHeight 约束

    //add the view with 0dp width and height
val layoutParams = ConstraintLayout.LayoutParams(0, 0)
val view = View(context)
view.layoutParams = layoutParams
view.id = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) View.generateViewId() else R.id.yourLayoutId
parent.addView(view)

//apply the default width and height constraints in code
val constraints = ConstraintSet()
constraints.clone(parent)
constraints.constrainDefaultHeight(view.id, ConstraintSet.MATCH_CONSTRAINT_SPREAD)
constraints.constrainDefaultWidth(view.id, ConstraintSet.MATCH_CONSTRAINT_SPREAD)
constraints.applyTo(parent)

如果你需要 Java:

    //add the view with 0dp width and height
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, 0);
View view = View(context);
view.setLayoutParams(layoutParams);
view.setId(R.id.yourLayoutId);
parent.addView(view);

//apply the default width and height constraints in code
ConstraintSet constraints = new ConstraintSet();
constraints.clone(parent);
constraints.constrainDefaultHeight(view.getId(), ConstraintSet.MATCH_CONSTRAINT_SPREAD);
constraints.constrainDefaultWidth(view.getId(), ConstraintSet.MATCH_CONSTRAINT_SPREAD);
constraints.applyTo(parent);

关于android - 以编程方式设置 ConstraintLayout 宽度以匹配父宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com