Как скрыть раздутый макет при нажатии снаружи в Android? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть 3 макета:

  1. Основной макет
  2. 1-й фрагмент (1-й экран View Pager в разделе Main Layout)
  3. SwipeUpView (раздутый макет при пролистывании вверхaction)

Вопрос в том, как мне закрыть / закрыть макет SwipeUp, когда я щелкаю за его пределами, когда 1-й фрагмент также является интерактивным макетом, который открывает другое действие.

* Примечание: макет SwipeUp занимает только 1/4 экрана, поэтому я могу щелкнуть по нему).

bottomDraggerView.setOnTouchListener(object:View.OnTouchListener

    {
        override fun onTouch(p0:View ?, p1:MotionEvent ?):Boolean {

        when(p1 ?.action)
        {
            MotionEvent.ACTION_DOWN->{
            startPoint = p1.rawY
        }

            MotionEvent.ACTION_MOVE ->{
            val moveY = Math.max(0.0f, p1.rawY + startPoint) + height
            swipeUpView.y = moveY
        }

            MotionEvent.ACTION_UP ->{

            val diff = Math.abs(startPoint + p1.rawY)
            var finalPosition :Float
            if (diff > height / 2) {
                finalPosition = 0.0f + 270
            } else {
                finalPosition = 0.0f - height
            }

            swipeUpView.animate().y(finalPosition).setDuration(400).start()
            Log.d("Swipe", "value " + finalPosition.toString())
        }

            MotionEvent.ACTION_CANCEL ->{
            val diff = Math.abs(startPoint + p1.rawY)
            var finalPosition :Float
            if (diff > height / 2) {
                finalPosition = 0.0f - 400
            } else {
                finalPosition = 0.0f
            }

            swipeUpView.animate().y(finalPosition).setDuration(400).start()

        }
        }
        return true
    }

    })

Что мне нужно, так это то, что если SwipeUpView присутствует или прокручивается, когда ящелкните за ее пределами, он закроется / оживит вниз.

1 Ответ

0 голосов
/ 03 июля 2019

Вы можете установить новый onClick для фрагмента, когда представление завышено, и затем вернуть его обратно, когда представление отклонено.

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