gpt4 book ai didi

android - createHorizo​​ntalChain 和 createHorizo​​ntalChainRtl 是否交换了?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:29:32 24 4
gpt4 key购买 nike

我试图使用下面的代码以编程方式创建约束链。

set.createHorizontalChain(
ConstraintSet.PARENT_ID, ConstraintSet.START,
ConstraintSet.PARENT_ID, ConstraintSet.END,
new int[] {view1.getId(), view2.getId()},
null,
ConstraintSet.CHAIN_PACKED
);

我收到以下错误:

 Caused by: java.lang.IllegalArgumentException: Left to start undefined
at android.support.constraint.ConstraintSet.connect(ConstraintSet.java:922)
at android.support.constraint.ConstraintSet.createHorizontalChain(ConstraintSet.java:883)
at android.support.constraint.ConstraintSet.createHorizontalChain(ConstraintSet.java:850)

然后我意识到这个方法的实现如下:

public void createHorizontalChain(int leftId, int leftSide, int rightId, int rightSide, int[] chainIds, float[] weights, int style) {
this.createHorizontalChain(leftId, leftSide, rightId, rightSide, chainIds, weights, style, 1, 2);
}

public void createHorizontalChainRtl(int startId, int startSide, int endId, int endSide, int[] chainIds, float[] weights, int style) {
this.createHorizontalChain(startId, startSide, endId, endSide, chainIds, weights, style, 6, 7);
}

我应该使用 createHorizo​​ntalChainRtl 这似乎有效吗,因为 6 和 7 是 STARTEND 的值,这意味着这是一个错误,或者我在这里做错了什么?

说真的,以编程方式处理 ConstraintLayout 确实具有挑战性。

最佳答案

你应该改用这个

set.createHorizontalChain(
ConstraintSet.PARENT_ID, ConstraintSet.RIGHT,
ConstraintSet.PARENT_ID, ConstraintSet.LEFT,
new int[] {ITEM_ID_1, ITEM_ID_2},
null ,
ConstraintSet.CHAIN_SPREAD);

这将在所有项目之间创建一个链。如果您的项目是在 XML 中创建的,那么您可能需要清除已应用的 ConstrainSet,方法是使用 ConstrainSet.Clear(ITEM_ID) 获取新的约束集。然后开始你的新约束规则。

如果你清除了一个项目的约束集,那么不要忘记添加

set.constrainWidth(ITEM_ID, ConstraintSet.WRAP_CONTENT);
set.constrainHeight(ITEM_ID, ConstraintSet.WRAP_CONTENT);

最后别忘了.applyTo

set.applyTo(constraintLayout);

这是一个很好的例子,但是这个人做得太过了,事先连接了所有的项目,这是没有必要的。 HorizontalChain Example

HorizontalChain

这里是关于 chain styles 的更多详细信息

Chain Styles

Here is also a Wiki关于如何在代码中使用约束布局。

关于android - createHorizo​​ntalChain 和 createHorizo​​ntalChainRtl 是否交换了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968826/

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