findViewsWithText的使用

起因:

項(xiàng)目用遇到一個(gè)問(wèn)題,由于某種語(yǔ)言字體的特性,要針對(duì)該語(yǔ)言專門(mén)調(diào)整行間距

由于涉及到多個(gè)頁(yè)面,每頁(yè)又有多個(gè)多行的textview,難道要對(duì)每個(gè)textview的初始化進(jìn)行一次處理么?如何優(yōu)雅的對(duì)每個(gè)textview實(shí)行間距調(diào)整?

思路

是想在rootRiew里找到所有的多行textview,統(tǒng)一調(diào)整間距

方案1:

用getChildAt的方法只能get到一層child,如果某個(gè)child還是Viewgroup,還需要遍歷該ViewGroup,套路太深,還要各種判斷,吃相十分難看,此路不通。

方案2:

想到前端的css樣式的實(shí)現(xiàn)方式,android有沒(méi)有可能給textView加個(gè)tag,通過(guò)tag來(lái)獲取某一類型的控件,然后一起設(shè)置效果呢?然而卻發(fā)現(xiàn)findViewwithTag每次也只能返回一個(gè)view。繼續(xù)不通

方案3:

在輸入findview的時(shí)候,studio提示了findViewsWithText,起初看到是個(gè)void方法,覺(jué)得不可用,結(jié)果深入一看,才知道他就是我想要的!

上代碼

?View里的findViewsWithText

ViewGroup里重寫(xiě)了該方法

一看源碼,豁然開(kāi)朗,遞歸調(diào)用,查找所有符合的view,判斷條件是 contentdiscription是否包含搜索值,添加到要輸出的ArrayList里

最終解決辦法:

在多行的textView加一個(gè)contentDescription 屬性,然后傳一個(gè)空的ArrayList,調(diào)用findviewsWithText方法,就可以愉快的得到所有想要的TextView了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容