2017-06-09 11 views
1

ボトムバーにsuch behaviorを適用するにはどうすればよいですか?フローティングアクションボタンのスクロールを意識した動作のように動作しますが、recyckerビューが下にスクロールすると、そのパネルが引き上げられます(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() 
     } 
    } 
} 
+0

[This(https://stackoverflow.com/questions/34715732/how-to-scroll-up-down-of-bottom-bar-on-scrolling-of-recyclerview)が助けてくれるかもしれない –

+0

私はすでに達成しているそれ。私は、リストが一番下までスクロールされているときにリストを重ねることなく、そのパネルをどのように表示するかを理解できません。 – user3280437

答えて

0

一つの方法:ここで

はスクロール意識行動のためのコードです。
findLastCompletelyVisibleItemPosition()LinearLayoutManagerであり、getItemCount()Adapterである。

+0

しかし、そのバーをrecyclerviewスクロールと一緒にスライドさせるにはどうすればいいですか? – user3280437

+0

はたぶん、あなたはその 'top'値を取り、それは最後の一つだかどうかを確認、' findLastVisibleItemPosition() 'を使用して、あなたの「バー」に適用することができます。 (おそらく、あなたのrecyclerviewの底に詰め物を追加し、詰め物の高さを上部に追加する必要があります)。それを手に入れますか? –

関連する問題