【发布时间】:2017-06-09 12:21:15
【问题描述】:
我怎样才能在底部栏获得such behavior?它的工作原理类似于浮动操作按钮的滚动感知行为,但是当 recyclerview 滚动到底部时,它会向上拉该面板(就像 recyclerview 中的最后一个元素是该面板)。我不认为开发人员复制了这些视图。也许有可能以某种方式扩展行为?
这是滚动感知行为的代码:
class ScrollAwareBehavior : CoordinatorLayout.Behavior<View> {
constructor() : super()
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
override fun onStartNestedScroll(coordinatorLayout: CoordinatorLayout?, child: View?, directTargetChild: View?, target: View?, nestedScrollAxes: Int): Boolean {
return nestedScrollAxes==ViewCompat.SCROLL_AXIS_VERTICAL
}
override fun onNestedScroll(coordinatorLayout: CoordinatorLayout?, child: View?, target: View?, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed)
if (dyConsumed > 0) {
val layoutParams = (child?.layoutParams as? CoordinatorLayout.LayoutParams?)?:return
val fab_bottomMargin = layoutParams.bottomMargin
child?.animate()?.translationY(child.height.toFloat() + fab_bottomMargin)?.setInterpolator(AccelerateDecelerateInterpolator())?.start()
} else if (dyConsumed < 0) {
child?.animate()?.translationY(0f)?.setInterpolator(AccelerateDecelerateInterpolator())?.start()
}
}
}
【问题讨论】:
-
[这个] (stackoverflow.com/questions/34715732/…) 可能会有所帮助
-
我已经做到了。当它滚动到最底部时,我只是不知道如何在不重叠列表的情况下显示该面板。
标签: android kotlin android-coordinatorlayout