Android中TextView文本高亮和點(diǎn)擊行為的封裝方法-創(chuàng)新互聯(lián)

前言

十余年的靖安網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整靖安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“靖安網(wǎng)站設(shè)計(jì)”,“靖安網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

相信大家應(yīng)該都有所體會(huì),對(duì)于一個(gè)社交性質(zhì)的App,業(yè)務(wù)上少不了給一段文本加上@功能、話題功能,或者是評(píng)論上要高亮人名的需求。當(dāng)然,Android為我們提供了ClickableSpan,用于解決TextView部分內(nèi)容可點(diǎn)擊的問(wèn)題,但卻附加了一堆的坑點(diǎn):

  1. ClickableSpan 默認(rèn)沒(méi)有高亮行為,也不能添加背景顏色;
  2. ClickableSpan 必須配合 MovementMethod 使用
  3. 一旦使用 MovementMethod,TextView 必定消耗事件
  4. 當(dāng)點(diǎn)擊ClickableSpan時(shí),TextView的點(diǎn)擊也會(huì)隨后觸發(fā)
  5. 當(dāng)press ClickableSpan 時(shí), TextView的press態(tài)也會(huì)被觸發(fā)

這些默認(rèn)的表現(xiàn)會(huì)使得添加 ClickableSpan 后會(huì)出現(xiàn)各種不符合預(yù)期的問(wèn)題,因此我們需要對(duì)其進(jìn)行封裝。

據(jù)個(gè)人使用經(jīng)驗(yàn),封裝后應(yīng)該能夠方便開發(fā)實(shí)現(xiàn)以下行為:

  1. 讓Span支持字體顏色和背景顏色變化,并且有press態(tài)行為
  2. Span的click或者press不影響TextView的click和press
  3. 可選擇的決定TextView是否應(yīng)該消耗事件

對(duì)于第三點(diǎn),需要解釋下TextView是否消耗事件的影響

用一張圖來(lái)闡述下我們的目的。我們開發(fā)過(guò)程中,可能將點(diǎn)擊事件加在TextView上,也可能將點(diǎn)擊行為添加在TextView的父元素上,例如評(píng)論一般是點(diǎn)擊整個(gè)評(píng)論item就可以觸發(fā)回復(fù)。 如果我們把點(diǎn)擊事件加在TextView的父元素上,那么我們期待的是點(diǎn)擊TextView的綠色區(qū)域應(yīng)該也要響應(yīng)點(diǎn)擊事件,但現(xiàn)實(shí)總是殘酷的,如果TextView調(diào)用了setMovementMethod, 點(diǎn)擊綠色區(qū)域?qū)⒉粫?huì)有任何反應(yīng),因?yàn)闀r(shí)間被TextView消耗了,并不會(huì)傳遞到TextView的父元素上。

那我們來(lái)一步一步看如何實(shí)現(xiàn)這幾個(gè)問(wèn)題。

首先我們定義一個(gè)接口 ITouchableSpan, 用于抽象press和點(diǎn)擊:

public interface ITouchableSpan {
 void setPressed(boolean pressed);
 void onClick(View widget);
}

網(wǎng)站題目:Android中TextView文本高亮和點(diǎn)擊行為的封裝方法-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article44/dsjohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、商城網(wǎng)站全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站營(yíng)銷、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)