父控制元件對子控制元件事件攔截處理
阿新 • • 發佈:2018-12-14
由於前段時間工作有一個專案太棘手太忙了 一直沒有時間好好的去總結.好久也沒更新自己的部落格了.這次我就簡單的講解下簡單的父控制元件對子控制元件的攔截事件的處理.
在工作中可能會遇到當這種情況 ,一個組合的搜尋框,父控制元件中包含一個EditText 和一個清除的Button 當在搜尋時候不容許點選清除按鈕清除EditText的文字內容.這種情況有兩種解決方案:
1. 可以判斷是否在搜尋 從而對Button設定是否可以點選
2.使用我將介紹的方法解決.通過父控制元件攔截子控制元件的事件,通過事件分發機制來處理.
分析了一波,那就直接上程式碼了:
1.我們自定義一個父控制元件並重寫它的 onInterceptTouchEvent(MotionEvent ev)方法.
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (isIntercept){ return true; } return super.onInterceptTouchEvent(ev); } /** * 通過外界來控制是否攔截子控制元件的事件 * @param intercept */ public void setIntercept(boolean intercept) { this.isIntercept = intercept; }
我在這裡通過在父控制元件中定義一個方法,通過改變變數的方法來控制父控制元件是否攔截子控制元件的事件.這樣就完美的解決了我上述所說的問題.希望這篇文章對你的工作和學習有所幫助!!!!!