美文网首页Android开发Android知识Android技术知识
TextView的部分点击事件和点击事件

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

作者: sakurajiang | 来源:发表于2016-09-21 11:49 被阅读1394次

    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,否则不会。)。

    相关文章

      网友评论

        本文标题:TextView的部分点击事件和点击事件

        本文链接:https://www.haomeiwen.com/subject/nclaettx.html