restorebiasses():。
fun constraintset.restorebiales(table:view,sideguide:guideline,height:float){
val xbias=table.x/(sideguide.left-table.width).tofloat()。
Val Ybias=表.y/(高度-表.height)
中心(table.id,constraintset.parent_id,constraintset.start,0,
sideguide.id,constraintset.start,0,xbias)
中心(table.id,constraintset.parent_id,constraintset.top,0,
constraintset.parent_id,constraintset.bottom,0,ybias)
}
整个代码都在github上。PrepareConstraintsForDrag()andPrepareBiases()are located inTableScene.kt.>code>。tabbleplan/constructEmptyTablePlan.kt中的回调andEmptyTableView.ktin thetableplandirectory.
这就是它在活动中的大致外观:
=ConstraintLayout
突然间,视野变得看不见了。进一步调查表明,视图定位在(0, 0)尺寸(0 x 0).
这个measureSpecs在我的onMeasure()是EXACTLY 0.我不知道那是什么意思,但是someone虽然我不知道在我看来为什么会发生这种情况,但如果你搞砸了测量模式,就会发生这种情况。
这是源代码。
在我的应用程序中,我的视图位于约束布局称为根,它的位置可以通过DragAndDrop程序。
我的计划是让视图对所有4个边都有约束,而位置是通过约束的偏差来控制的。当我开始拖动视图时,左右约束A被删除,位置由setX()和setY().使用此方法完成此操作(Kotlin):
fun ConstraintSet.prepareConstraintsForDrag(table: View) {
clear(table.id)
connect(table.id, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, table.left)
connect(table.id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, table.top)
}
然后,当我结束拖地车,我从拖放回调中调用以下内容,以便将视图布局移动到x和y,然后调用restorebiases()再次连接所有4个面:
DragEvent.ACTION_DRAG_ENDED -> {
shadowTouchPoint = null // Just an intern indicator for the drag
val draggedView = event.localState as View
with(draggedView) {
visibility = View.VISIBLE
rootConstraints.clone(root)
setMargin(id, ConstraintSet.START, x.toInt())
setMargin(id, ConstraintSet.TOP, y.toInt())
rootConstraints.applyTo(root)
translationX = 0f
translationY = 0f
}
rootConstraints.clone(root)
rootConstraints.restoreBiases(draggedView, options_guide, root.height.toFloat())
rootConstraints.applyTo(root)
}
restorebiases():
fun ConstraintSet.restoreBiases(table: View, sideGuide: Guideline, height: Float) {
val xBias = table.x / (sideGuide.left - table.width).toFloat()
val yBias = table.y / (height - table.height)
center(table.id, ConstraintSet.PARENT_ID, ConstraintSet.START, 0,
sideGuide.id, ConstraintSet.START, 0, xBias)
center(table.id, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0,
ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0, yBias)
}
整个代码都打开了GitHub.prepareConstraintsForDrag()和prepareBiases()位于TableScene.kt.回拨入tabblePlan/ConstructEmptyTablePlan.kt和EmptyTableView.kt在tablePlan目录。
这就是它在活动内部的大致情况:
且大小(0)