TextView的部分点击事件和点击事件

1.在TextView中实现部分点击
我在activity中使用了clickablespan这个类,然后完全按照视频上的操作下来,发现点击时不响应,于是我便设置了电话的链接,发现这时点击
自己设置的区域就会响应,但是如果我把电话链接删了,这时就又不会响应,于是我便上网查找,如何设置Textview的部分点击,发现是因为我
少加了一行代码myTextView.setMovementMethod(LinkMovementMethod.getInstance());加上之后就行了(可是视频里也没有,可能是视频太早了,
系统的源代码进行了细微的更改)。

结论:使用clickablespanTextView设置部分点击,记得要为TextView设置movementMethod
2.在TextView中实现完全点击
这个只需要为textview设置监听器就行,由于我是在之前的代码中直接加入的,然后当我点击我之前设置的部分点击的区域时,发现是先调用
clickablespan中的onclick(),然后是onclicklistener中的onclick(),而点击电话的链接时,是直接跳转到拨打电话的页面,即不会调用
clickablespan中的onclick()方法,也不会调用onclicklistener中的onclick()方法,因为没有打印出这两个方法中的输出语句。同时这里有一点
需要提一下,如果这时你在xml文件中声明android:clickable="false", android:linksClickable="false",这时你会发现,无论是自己设置的
部分区域,亦或是电话的链接,还是textview中的任何地方,都是可以点击的。这是因为无论是setOnClickListener会强制改变clickable属性,
myTextView.setMovementMethod(LinkMovementMethod.getInstance());会改变android:linksclickable的属性(这里得提一点,如果你将
myTextView.setMovementMethod(LinkMovementMethod.getInstance())代码去掉,然后设置android:linksclickable="true",这时就会有一个有趣的
现象,若textview的值中有phoneweb之类的,那么无论是自己设置的区域还是phone,web都可以点击,若是没有phone,web之类的,那么自己设置的
区域就无法点击,感觉是android:linksclickable="true"属性是对于android:autolink而设置的,若textview中的内容存在这些,则会让linksclickable
设置为true,否则不会。),所以都可以点击。如果你将setonclicklistener()去掉,然后设置android:linksClickable="true"android:clickable="false"
发现自己设置的区域和电话依然可以点击。

结论:为TextView设置完全点击时,为TextView设置onclicklistener监听器,若同时还有部分点击,以及电话。那么当点击设置的部分点击区域时,先运行clickablespan中的onclick(),然后是onclicklistener中的onclick(),若点击电话的链接,是直接跳转到拨打电话的页面,即不会调用clickablespan中的onclick()方法,也不会调用onclicklistener中的onclick()方法。同时setOnClickListener会强制改变clickable属性,而myTextView.setMovementMethod(LinkMovementMethod.getInstance());会改变android:linksclickable的属性(这里得提一点,如果你将myTextView.setMovementMethod(LinkMovementMethod.getInstance())代码去掉,然后设置android:linksclickable="true",这时就会有一个有趣的现象,若textview的值中有phone,web之类的,那么无论是自己设置的区域还是phone,web都可以点击,若是没有phone,web之类的,那么自己设置的区域就无法点击,感觉是android:linksclickable="true"属性是对于android:autolink而设置的,若textview中的内容存在这些,则会让linksclickable设置为true,否则不会。)。



作者:sakurajiang
链接:https://www.jianshu.com/p/a1f879df5639
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。



作者:sakurajiang
链接:https://www.jianshu.com/p/a1f879df5639
來源:简书
 

你可能感兴趣的:(android开发)