Как увеличить высоту фрагмента, прокрутив его вниз? - PullRequest
1 голос
/ 24 апреля 2020

Я хочу показать фрагмент карты для действия, которое пользователь может развернуть, прокрутив его вниз. как это:

enter image description here

Я помещаю контейнер фрагментов в CollapsingToolbarLayout, чтобы свернуть его, и увеличиваю высоту appBarLayout, когда CoordinatorLayout прокручиваем вниз до разверните фрагмент.

coordinatorLayout.setOnTouchListener(object : View.OnTouchListener {
        override fun onTouch(v: View?, event: MotionEvent?): Boolean {
            when (event?.action) {
                MotionEvent.ACTION_DOWN -> {
                    downY = event.y
                    lastY = downY
                    return true
                }

                MotionEvent.ACTION_MOVE -> {
                    if (lastY == 0f) {
                        lastY = event.y
                        return true
                    }

                    val deltaY = event.y - lastY
                    lastY = event.y
                    val param = appBarLayout.layoutParams

                    if (deltaY > 0 || param.height > mapMinHeight) {
                        param.height += deltaY.roundToInt()
                        appBarLayout.layoutParams = param
                    }
                    return true
                }

                MotionEvent.ACTION_UP -> {
                    lastY = 0f
                    expandCollapseMap()
                    return true
                }
            }

            return false
        }
    })

, но он запаздывает и имеет плохую производительность. Вы можете предложить лучший способ для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...