标题Listview中的item布局中嵌套horizontalScrollView实现点击事件(完整案例,想避坑的可以来看看)
我也是大家一样被这个问题困扰了好久,找过各种论坛和解决方案,看着大家东拼西凑的抄,网上都是说解决什么点击事件与滑动事件冲突问题(或者是只解决了纵横方向的冲突问题,其实都没有解决点击事件)找了半天也没有解决问题,希望和有同等困扰的朋友,可以尝试本文的一种新的解决方案。
一:首先要明白ScrollView与HorizontalScrollView是没有点击事件,我不作过多解释,相关原因请看郭神的这篇博客的解释,我也是看完后恍然大悟!博客网址:考你一道题,ScrollView和HorizontalScrollView可以设置点击事件吗?
二:明白为什么没有点击事件后,利用回调函数解决点击失效问题。(我并没有否认其他的解决方案,其他我试过都没有效果,但我认为这是最有效的解决方案)
(废话不多说,直接上代码!)
三.完整案例(结构命名等不规范,重要的是解决问题的思路请见谅,实现的功能是点击ListView中的这一项就会选中CheckBox.)
①activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/lv_test"
android:layout_width="550dp"
android:layout_height="match_parent"/>
</LinearLayout>
②item_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:id="@+id/llayout"
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:focusableInTouchMode="true"
android:focusable="true"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<CheckBox
android:id="@+id/cb_item"
android:layout_marginLeft="20dp"
android:layout_width="50dp"
android:layout_height="50dp" />
<TextView
android:id="@+id/tv_name_item"
android:layout_width="590dp"
android:layout_marginLeft="30dp"
android:layout_height="match_parent"
android:gravity="center_vertical"
android