使用ConstraintLayout
设置水平链约束时遇到错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.optimize.debug, PID: 18532
java.lang.RuntimeException: Unable to start activity ComponentInfo{me.optimize.debug/me.optimize.post.PostActivity}: java.lang.IllegalArgumentException: must have 2 or more widgets in a chain
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.IllegalArgumentException: must have 2 or more widgets in a chain
at android.support.constraint.ConstraintSet.createHorizontalChain(ConstraintSet.java:1032)
at android.support.constraint.ConstraintSet.createHorizontalChain(ConstraintSet.java:1005)
我基本上是添加约束,如:
set.createHorizontalChain(buttonA.id, ConstraintSet.LEFT, buttonC.id, ConstraintSet.RIGHT, arrayOf(buttonA.id, buttonB.id, buttonC.id).toIntArray(), arrayOf(0f, 0f).toFloatArray(), 0)
我有2个以上的小部件,因为我要传递
buttonA
,buttonB
和buttonC
。 最佳答案
好吧,在写我的问题时,我决定研究一下我在GitHub上找到的android.support.constraint.ConstraintSet.createHorizontalChain
代码,然后猜测:
chainIds
和weights
的数组必须相同!