android點(diǎn)擊無效驗(yàn)證的解決方法
背景
在寫一個(gè)東西滑動(dòng)刪除列表的時(shí)候,出現(xiàn)了一個(gè)問題。我的需求是,左滑然后出現(xiàn)delete,然后點(diǎn)擊delete,讓該滑塊消失。
我在點(diǎn)列表的第一行的時(shí)候,左滑,出現(xiàn)delete,點(diǎn)擊刪除,ok的,完美。然后我點(diǎn)擊第三個(gè),同樣左滑出現(xiàn)delete,點(diǎn)擊delete沒有任何反應(yīng)。
然后我再點(diǎn)擊第一個(gè),又可以刪除。
模型如下:
子模型:
ps:
黑色的是最外層,藍(lán)色的是在黑塊中,然后delete區(qū)域在滑塊區(qū)。滑動(dòng)是控制藍(lán)色區(qū)域的移動(dòng)。
如果僅僅是這樣,我一點(diǎn)也不慌。出現(xiàn)了一些東西,更加我讓疑惑。delete的groupview 容器點(diǎn)擊是有效的,也就是藍(lán)色區(qū)域可點(diǎn)擊的,我用它來點(diǎn)擊添加item,這同樣也給我提供了線索。
在我心中產(chǎn)生了兩個(gè)個(gè)疑問:
- 為什么只有第一個(gè)可以點(diǎn)擊, 刪除第一個(gè)后,第二個(gè)變成了第一個(gè),又可以刪除?
- 為什么delete 區(qū)域不可點(diǎn)擊,而其groupview 可以點(diǎn)擊?
解決
對于第一個(gè)疑問,我嘗試檢測是否綁定了,當(dāng)然不可能去調(diào)試看了,因?yàn)閘ist嘛,都一個(gè)樣,查看xy坐標(biāo)的話,腦殼痛。
// holder.tvMsgRemindDelete 是獲取到delete對象 holder.tvMsgRemindDelete.setText("你好啊");
我將拿到的delete view,然后修改它的text。
當(dāng)然肯定是沒用的,我寫完的時(shí)候就感覺不對勁,然而還抱著一絲希望。
因?yàn)槿绻兂傻谝粋€(gè)的話,那么是可以點(diǎn)擊刪除的,肯定綁定了事件哈。
對于第二個(gè)疑問,父類groupview 可以點(diǎn)擊,我就猜想是否是父類的groupview 阻止了該分發(fā)事件。(一般情況是不會阻止的,然而我做的這個(gè)滑動(dòng)較為復(fù)雜,自我安慰一下)
是否分發(fā)到子元素,涉及到
1. onInterceptTouchEvent
2. dispatchTouchEvent
這兩個(gè)事件,一個(gè)是分發(fā),一個(gè)是攔截。
然后找到[ACTION_DOWN,ACTION_UP]判斷事件是通過這兩個(gè)判斷的。
然后真的發(fā)現(xiàn):return inView(x, y)
ps:
inView 是我用來判斷是當(dāng)前x,y軸是否在滑塊中,也就是藍(lán)色塊中。
前面將delete放在外面,如下:
忘記改然后造成了這個(gè)問題。
總結(jié)
點(diǎn)擊無效的時(shí)候,不僅要查閱自身事件,同樣也需要查詢事件分發(fā)機(jī)制,看看是否哪個(gè)土匪攔截了,當(dāng)然土匪一般是自己創(chuàng)造的。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
相關(guān)文章
Android自定義RecyclerView實(shí)現(xiàn)不固定刻度的刻度尺
這篇文章主要為大家詳細(xì)介紹了Android自定義RecyclerView實(shí)現(xiàn)不固定刻度的刻度尺,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07Android實(shí)現(xiàn)調(diào)用震動(dòng)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)調(diào)用震動(dòng)的方法,實(shí)例分析了Android中Vibrator類的調(diào)用與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Android開發(fā)之TabActivity用法實(shí)例詳解
這篇文章主要介紹了Android開發(fā)之TabActivity用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android擴(kuò)展Activity實(shí)現(xiàn)標(biāo)簽頁效果的具體步驟與相關(guān)技巧,需要的朋友可以參考下2016-03-03Android Studio綁定下拉框數(shù)據(jù)詳解
這篇文章主要為大家詳細(xì)介紹了Android Studio綁定下拉框數(shù)據(jù),Android Studio綁定網(wǎng)絡(luò)JSON數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10activity 獲取rootView 設(shè)置backGroundColor的方法
下面小編就為大家?guī)硪黄猘ctivity 獲取rootView 設(shè)置backGroundColor的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04android事件分發(fā)機(jī)制的實(shí)現(xiàn)原理
本篇文章主要介紹了android事件分發(fā)機(jī)制的實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Android自定義FloatingActionButton滑動(dòng)行為只隱藏不出現(xiàn)的問題小結(jié)
這篇文章主要介紹了Android自定義FloatingActionButton滑動(dòng)行為只隱藏不出現(xiàn)的問題小結(jié),需要的朋友可以參考下2017-01-01