我使用MotionLayout创建了一个旋转木马,按照此指南进行操作:https://developer.android.com/training/constraint-layout/motionlayout/carousel
我已经成功实现了指南中的所有内容——我可以通过滑动浏览旋转木马中的项。
然而,我在尝试向旋转木马的项添加一个onClickListner时遇到了问题。我已经尝试在适配器中设置onClickListner:
carousel.setAdapter(object : Carousel.Adapter {
override fun populate(view: View?, index: Int) {
view.setOnClickListener {
// do something
}
}
})
然而,这会使得轮播对滑动操作不响应。当我尝试滑动轮播时,它会执行我的onClick函数,但不会执行我的onSwipe过渡效果。
我的问题是,如何为Carousel项目设置适当的onClick函数?
在寻找答案时,我看到了一些帖子引用了Carousel.setOnItemClickListener()。这正是我需要的,但似乎已经被弃用了。
我还看到帖子说要重写onTouchListener并在ACTION_UP事件中运行您的onClick代码。我尝试了几种此代码片段的变体,但无法使其工作:
carousel.setAdapter(object : Carousel.Adapter {
override fun populate(view: View?, index: Int) {
view.setOnTouchListener { view, motionEvent ->
if(motionEvent.action == MotionEvent.ACTION_UP) {
// do something
}
view.performClick()
}
}
})
非常感激您的帮助!