1. 程式人生 > >View事件攔截的兩種方法

View事件攔截的兩種方法

      通常ViewGroup要對事件進行攔截可以通過重寫onInterceptTouchEvent()方法並返回true,就表示要對事件進行攔截,攔截之後事件就不會再傳遞到子View,自然的,子View的onTouchEvent()方法也不會被呼叫了。

      另外如果你不想重寫ViewGroup的onInterceptTouchEvent()來攔截事件的話,可以讓父容器呼叫requestDisallowInterceptTouchEvent(false)來攔截事件,這個引數的false就表示子View需要父檢視攔截事件,true表示子View不要父View攔截事件。當這個方法設定以後,在ViewGroup的dispatchTouchEvent()方法就會判斷是否需執行onInterceptTouchEvent

()方法,如果requestDisallowInterceptTouchEvent()傳遞引數為true就不會執行onInterceptTouchEvent(),如果傳遞引數為false就會執行onInterceptTouchEvent()方法。

      然後,你很有可能在使用requestDisallowInterceptTouchEvent()的時候會很失望,不要問我為什麼,因為在dispatchTouchEvent()中在進行判斷是否去呼叫onInterceptTouchEvent()方法之前會呼叫resetState()方法重新把標誌位修改:

   


     那麼該如何解決這個問題,

點我檢視答案!

相關推薦

MUI自定義事件方法

mui.fire 監聽自定義事件 document.addEventListener('gohome',function(){ })觸發自定義事件 window.

在Activity中響應ListView內部按鈕的點選事件方法!!! 在Activity中響應ListView內部按鈕的點選事件方法

  轉載:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群裡面有人問到一個問題:如何在Activity中響應ListView內部按鈕的點選事件,不要在Adapter中響應? 對於這個問題,我最初給他的解答是,在Adapter中定義

給TextBox新增失去焦點事件方法

第一種:              Txt_CustomerID.Attributes.Add("onfocusout", "CheckID('CustomerID');GetCompanyName();");              給TextBox新增失去焦點事件,執行

android 捕獲返回(後退)按鈕事件方法

第一種方法: public void onBackPressed() {         //code......     } 第二種方法:     public boolean onKeyDown(int keyCode, KeyEvent event) {      

angularjs 繫結enter事件方法

繫結dom元素enter事件有兩種方法,個人推薦第二種 方法一:由於沒有ngEnter指令,所以可以自己擴充套件一個 指令程式碼如下: 'use strict'; define(functi

View事件攔截方法

      通常ViewGroup要對事件進行攔截可以通過重寫onInterceptTouchEvent()方法並返回true,就表示要對事件進行攔截,攔截之後事件就不會再傳遞到子View,自然的,子View的onTouchEvent()方法也不會被呼叫了。       另

js阻止事件冒泡的方法

type print mil opp name sel code read lib 一、冒泡事件簡介 當我們點擊一個控件的時候,如果包括這個控件的父控件也有click事件,則會繼續執行。 方法一:event.stopPropagation( ); 例如: <div

view添加毛玻璃效果方法

toolbar with mage lB cgrect width fault init pre 第一種方法: UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

postgraSql支持View可以修改的方法

all SQ del tor tle and ase tin amp http://www.postgresqltutorial.com/postgresql-views/ Creating PostgreSQL updatable views – giv

阻止事件冒泡的方法

何為冒泡:       即事件開始是由最具體的元素接收,然後逐層向上級傳播到較為不具體的元素。 加入一個button和它的父級div同時定義了onclick事件,點選button時,在觸發了button的onclick事件之後,會發生事件冒泡,然後觸發div的onclic

Android在佈局中動態新增view方法

一、說明 新增檢視檔案的時候有兩種方式:1、通過在xml檔案定義layout;2、java程式碼編寫 二、前言說明 1.構造xml檔案 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater類。這個類最主要的功

Button點選事件實現頁面跳轉的方法

方法一: 常用方式,在java檔案中給Button設定點選監聽事件button.setOnClickListener(),新建Intent類,從MainActivity跳轉至ImageTest but

為未來元素繫結事件(JavaScript和jquery方法對比)

小白 ~_~!!  日常打醬油  一般我們為已經存在的元素繫結事件,那麼直接獲取這個元素的id,直接繫結上去就可以了. 但當這個元素不存在,將會我們又會新增進去的時候,直接獲取目標元素id繫結事件就會對未來新新增的元素失效了!!.  也就是你後來新新增這個元素,是無法被觸發的

35.註冊監聽器的方法(View.OnClickListener)

1. 使用匿名類註冊監聽器 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInst

為Button點選事件註冊監聽器的方法

Button是Android程式中最常用到的控制元件之一,主要用來與程式和使用者的互動。可配置的屬性這裡不展開敘述,這裡簡單的在activity_main.xml中加入一個Button: <Bu

【Jquery】jQuery獲取URL參數的方法

ont ras mil scrip line 兩種方法 lower quest request jQuery獲取URL參數的關鍵是獲取到URL,然後對URL進行過濾處理,取出參數。 location.href是取得URL。location.search是取得URL“?

線程的啟動的方法,Runnable接口,run()的調用

ride 之前 線程終止 源碼解析 star 有意 tro thread類 override 實現並啟動線程有兩種方法1、寫一個類繼承自Thread類,重寫run方法。用start方法啟動線程2、寫一個類實現Runnable接口,實現run方法。用new Thread(Ru

spring 讀取properties的方法

jdbc factor frame ram con framework html tex 讀取 一:直接使用context命名空間 如: <beans xmlns="http://www.springframework.org/schema/beans" xm

Parallels Desktop 12卸載的方法

對於mac系統虛擬機:Parallels Desktop 12怎麽卸載呢? 首先在Mac電腦中打開應用程序,然後找到Parallels Desktop 12軟件圖標,將它移除至廢紙簍中就可以了。如果我們已經在虛擬機中安裝了Windows,就需要先將這些Windows刪除,這樣才不會占用內存。

js數組去重的方法

遍歷 方法 doc 思路 i++ 代碼 數組去重 -- length 數組去重這種問題經常會遇到,解決方法也有很多,這裏就總結兩種比較常用的方法。 方法一 第一種方法的思路:遍歷數組裏的元素,由第一個元素開始依次按照順序與其後面的元素相比較,如果不同則不