TextView的部分点击事件和点击事件
1.在TextView中實現(xiàn)部分點擊
我在activity中使用了clickablespan這個類,然后完全按照視頻上的操作下來,發(fā)現(xiàn)點擊時不響應(yīng),于是我便設(shè)置了電話的鏈接,發(fā)現(xiàn)這時點擊
自己設(shè)置的區(qū)域就會響應(yīng),但是如果我把電話鏈接刪了,這時就又不會響應(yīng),于是我便上網(wǎng)查找,如何設(shè)置Textview的部分點擊,發(fā)現(xiàn)是因為我
少加了一行代碼myTextView.setMovementMethod(LinkMovementMethod.getInstance());加上之后就行了(可是視頻里也沒有,可能是視頻太早了,
系統(tǒng)的源代碼進行了細微的更改)。
結(jié)論:使用clickablespan為TextView設(shè)置部分點擊,記得要為TextView設(shè)置movementMethod。
2.在TextView中實現(xiàn)完全點擊
這個只需要為textview設(shè)置監(jiān)聽器就行,由于我是在之前的代碼中直接加入的,然后當(dāng)我點擊我之前設(shè)置的部分點擊的區(qū)域時,發(fā)現(xiàn)是先調(diào)用
clickablespan中的onclick(),然后是onclicklistener中的onclick(),而點擊電話的鏈接時,是直接跳轉(zhuǎn)到撥打電話的頁面,即不會調(diào)用
clickablespan中的onclick()方法,也不會調(diào)用onclicklistener中的onclick()方法,因為沒有打印出這兩個方法中的輸出語句。同時這里有一點
需要提一下,如果這時你在xml文件中聲明android:clickable="false", android:linksClickable="false",這時你會發(fā)現(xiàn),無論是自己設(shè)置的
部分區(qū)域,亦或是電話的鏈接,還是textview中的任何地方,都是可以點擊的。這是因為無論是setOnClickListener會強制改變clickable屬性,
而myTextView.setMovementMethod(LinkMovementMethod.getInstance());會改變android:linksclickable的屬性(這里得提一點,如果你將
myTextView.setMovementMethod(LinkMovementMethod.getInstance())代碼去掉,然后設(shè)置android:linksclickable="true",這時就會有一個有趣的
現(xiàn)象,若textview的值中有phone,web之類的,那么無論是自己設(shè)置的區(qū)域還是phone,web都可以點擊,若是沒有phone,web之類的,那么自己設(shè)置的
區(qū)域就無法點擊,感覺是android:linksclickable="true"屬性是對于android:autolink而設(shè)置的,若textview中的內(nèi)容存在這些,則會讓linksclickable
設(shè)置為true,否則不會。),所以都可以點擊。如果你將setonclicklistener()去掉,然后設(shè)置android:linksClickable="true",android:clickable="false",
發(fā)現(xiàn)自己設(shè)置的區(qū)域和電話依然可以點擊。
結(jié)論:為TextView設(shè)置完全點擊時,為TextView設(shè)置onclicklistener監(jiān)聽器,若同時還有部分點擊,以及電話。那么當(dāng)點擊設(shè)置的部分點擊區(qū)域時,先運行clickablespan中的onclick(),然后是onclicklistener中的onclick(),若點擊電話的鏈接,是直接跳轉(zhuǎn)到撥打電話的頁面,即不會調(diào)用clickablespan中的onclick()方法,也不會調(diào)用onclicklistener中的onclick()方法。同時setOnClickListener會強制改變clickable屬性,而myTextView.setMovementMethod(LinkMovementMethod.getInstance());會改變android:linksclickable的屬性(這里得提一點,如果你將myTextView.setMovementMethod(LinkMovementMethod.getInstance())代碼去掉,然后設(shè)置android:linksclickable="true",這時就會有一個有趣的現(xiàn)象,若textview的值中有phone,web之類的,那么無論是自己設(shè)置的區(qū)域還是phone,web都可以點擊,若是沒有phone,web之類的,那么自己設(shè)置的區(qū)域就無法點擊,感覺是android:linksclickable="true"屬性是對于android:autolink而設(shè)置的,若textview中的內(nèi)容存在這些,則會讓linksclickable設(shè)置為true,否則不會。)。
作者:sakurajiang
鏈接:https://www.jianshu.com/p/a1f879df5639
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
作者:sakurajiang
鏈接:https://www.jianshu.com/p/a1f879df5639
來源:簡書
?
總結(jié)
以上是生活随笔為你收集整理的TextView的部分点击事件和点击事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Notification
- 下一篇: 第三方免费加固横向对比