Скользящая панель (от Java до Kotlin) - PullRequest
0 голосов
/ 05 декабря 2018

Как я могу отобразить состояния панели SlidingUpPanel в Kotlin?

Я хочу использовать библиотеку https://github.com/umano/AndroidSlidingUpPanel, следуя этому руководству:

http://www.devexchanges.info/2015/05/making-sliding-up-panel-like-google.html

и результат должен выглядеть следующим образом:

https://www.youtube.com/watch?v=g464fp-2dQU

Код на Java из учебной ссылки:

private SlidingUpPanelLayout.PanelSlideListener onSlideListener() {
    return new SlidingUpPanelLayout.PanelSlideListener() {
        @Override
        public void onPanelSlide(View view, float v) {
            textView.setText("panel is sliding");
        }

        @Override
        public void onPanelCollapsed(View view) {
            textView.setText("panel Collapse");
        }

        @Override
        public void onPanelExpanded(View view) {
            textView.setText("panel expand");
        }

        @Override
        public void onPanelAnchored(View view) {
            textView.setText("panel anchored");
        }

        @Override
        public void onPanelHidden(View view) {
            textView.setText("panel is Hidden");
        }
    };
}

Преобразованный код из Java в Kotlin (Iпоместите тост из библиотеки anko вместо textView):

private fun onSlideListener(): SlidingUpPanelLayout.PanelSlideListener {
    return object : SlidingUpPanelLayout.PanelSlideListener {
        override fun onPanelSlide(view: View, v: Float) {
            toast("panel is sliding")
        }

        fun onPanelCollapsed(view: View) {
            toast("panel Collapse")
        }

        fun onPanelExpanded(view: View) {
            toast("panel expand")
        }

        fun onPanelAnchored(view: View) {
            toast("panel anchored")
        }

        fun onPanelHidden(view: View) {
            toast("panel is Hidden")
        }
    }
}

В коде Java, в методе onCreate, у меня есть:

slidingLayout.setPanelSlideListener(onSlideListener());

, который, кажется, не работает в Kotlin, потому чтоу меня есть следующие методы: Click, Drag, Hover, Key и Touch (слушатели).

Я думаю, что другим хорошим подходом может быть реализация

SlidingPaneLayout.PanelSlideListener

в моем классе, но я все еще не могне заставить его работать.

Есть ли какое-нибудь решение, чтобы узнать, отображается ли панель в Kotlin или скрыта?

1 Ответ

0 голосов
/ 06 июня 2019

Вам нужно загрузить Slidinglayout.

private lateinit var slidingLayout: SlidingUpPanelLayout
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.activity_main, container, false).also {
        slidingLayout = it.findViewById(R.id.sliding_Layout)
    }
}

, чем вы проверяете для PanelState

if (slidingLayout.panelState == SlidingUpPanelLayout.PanelState.HIDDEN)

У вас также есть состояния ЗАЯВЛЕНО, РАСШИРЕНО, СВЕРНУТО, ДРАГИРОВАНИЕ

Если вы хотите настроить прослушиватель в Kotlin, я сделал это следующим образом.

slidingLayout.addPanelSlideListener(object : SlidingUpPanelLayout.PanelSlideListener {
        override fun onPanelSlide(panel: View?, slideOffset: Float) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

        override fun onPanelStateChanged(panel: View?, previousState: SlidingUpPanelLayout.PanelState?, newState: SlidingUpPanelLayout.PanelState?) {
           TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...