Edu*_*eis 5 android android-layout android-constraintlayout
我试图用编程方式创建一个约束链,使用下面的代码.
set.createHorizontalChain(
ConstraintSet.PARENT_ID, ConstraintSet.START,
ConstraintSet.PARENT_ID, ConstraintSet.END,
new int[] {view1.getId(), view2.getId()},
null,
ConstraintSet.CHAIN_PACKED
);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
然后我意识到这个方法的实现如下:
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);
}
Run Code Online (Sandbox Code Playgroud)
我应该使用createHorizontalChainRtl
哪个似乎有用,因为6和7是值,START
并且END
意味着这是一个错误,或者我在这里做错了什么?
说真的,以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);
Run Code Online (Sandbox Code Playgroud)
这将在所有项目之间创建一个链.如果您的项目是在XML中创建的,那么您可能需要清除已应用的ConstrainSet,方法是使用ConstrainSet.Clear(ITEM_ID)
获取新的约束集.然后开始新的约束集规则.
如果清除项目的constrainSet,则不要忘记添加
set.constrainWidth(ITEM_ID, ConstraintSet.WRAP_CONTENT);
set.constrainHeight(ITEM_ID, ConstraintSet.WRAP_CONTENT);
Run Code Online (Sandbox Code Playgroud)
最后别忘了 .applyTo
set.applyTo(constraintLayout);
Run Code Online (Sandbox Code Playgroud)
这是一个相当好的例子,但这个人过早地将所有项目连接起来,这是不必要的.HorizontalChain示例
这里有关于链式的更多细节
这里还有一个关于如何在代码中使用constrainlayout 的Wiki.
归档时间: |
|
查看次数: |
1601 次 |
最近记录: |