gpt4 book ai didi

Android 编程和 XML 约束不同

转载 作者:行者123 更新时间:2023-11-29 01:09:02 25 4
gpt4 key购买 nike

我已经花了一些时间来寻找这个问题的解决方案。

在 Activity 的 onCreate 方法中,我创建了两个按钮并设置了它们的约束。但是当在 xml 中完成此操作时,相同的约束看起来不同。

XML:XML constraints image

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="Button 1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:text="Button 2"
app:layout_constraintLeft_toRightOf="@+id/button"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

程序化:Programmatic constraints image

    Button btn1 = new Button(this);
Button btn2 = new Button(this);
btn1.setText("Button 1");
btn2.setText("Button 2");

layout.addView(btn1);
layout.addView(btn2);

ConstraintSet set = new ConstraintSet();
set.clone(layout);

set.connect(btn1.getId(), ConstraintSet.LEFT, layout.getId(), ConstraintSet.LEFT, 8);
set.connect(btn1.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 8);
set.connect(btn2.getId(), ConstraintSet.LEFT, btn1.getId(), ConstraintSet.RIGHT, 8);
set.connect(btn2.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 8);
set.connect(btn2.getId(), ConstraintSet.RIGHT, layout.getId(), ConstraintSet.RIGHT, 8);
set.applyTo(layout);

我读过这个Programmatically connecting multiple views set to any size using ConstraintLayout但那只是错误的连接,我在我的连接中没有发现任何错误,多次检查。

最佳答案

问题是你没有设置任何 id 的按钮,所以它采用默认 View id View.NO_ID,所以如果你更改按钮的 id 它会正常工作。

尝试像下面的示例一样将 id 添加到 button1,它将按您预期的那样工作。

btn1.setId(View.generateViewId());

关于Android 编程和 XML 约束不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604186/

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