TextView误用"inputType"属性会导致点击事件失效!

来源:互联网 发布:淘宝vip课程免费下载 编辑:程序博客网 时间:2024/05/16 03:22

今天遇到了一个bug,我的RecyclerView的item点击事件变得不灵敏了。经我仔细观察,当我点击item中的一个TextView时,点击事件会失灵。

根据Android事件分发机制,TextView没有setOnClickListener时是不会拦截父控件的点击事件的。那么我遇到的bug是怎么产生的呢?

我又操作了一会儿界面,发现一件很奇怪的事,如下图:
这里写图片描述
当我长按改TextView的时候,会弹出系统自带的选择框,这说明我的TextView可能被当成了EditView。
我去布局文件里面看了下,发现这个TextView多加了一条属性

android:inputType="text"

就是因为多加了这一条属性,TextView的TouchEvent被拦截了,导致父控件无法接收到点击事件。我没有去研究相对应的源码,但我猜测使用了inputType属性的TextView会被误认为是EditText,而EditText确实不会将点击事件传给父控件。
(在TextView中使用inputType属性,AS会报warning,但不会报error)

原创粉丝点击