问题描述
我在ScrollView的LinearLayout中有一个包含5个项目的布局。我希望这些项目是可点击的,并且不会干扰滚动。
问题正在滚动。如果向上/向下拖动项目,则不会滚动。如果我在项目之间的边距上上下拖动,它会滚动。
当用户在项目上向上/向下拖动时,如何处理项目的单击事件并允许滚动?
注意:这与有效的布局无关,或者仅与使用RecyclerView有关(这似乎有点过头)。我想知道如何滚动和处理被点击的孩子。
我尝试了单击和触摸侦听器,GestureDetector,onInterceptTouchEvent的各种组合...但是我似乎只能单击或滚动,而不能同时单击。
我遵循了这些教程/答案,但都没有成功:
- Android tutorial on intercepting touch events
- How to vary between child and parent view group touch events
- OnClickListener on scrollView
肯定有一些简单的东西我想念...一些标志或东西吗?
布局:
override fun onCreate(savedInstanceState: Bundle?) {
itemOne.setonClickListener(this)
itemTwo.setonClickListener(this)
...
}
override fun onClick(view: View?) {
when (view?.id) {
R.id.itemOne-> ...
R.id.itemTwo -> ...
...
}
}
活动
{{1}}
解决方法
只需删除XML中的scrollView id使其在R文件中不列出,这将使其在侦听器中不可点击