2011-05-31 31 views

回答

14

所以在你的活動,你會設置你重寫onTouchListener:

  mWebView.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       v.setOnTouchListener(mWebView.mOnTouchListener); 
       return false; 
      } 
     }); 

而且你將不得不作出一個新的類,擴展的WebView。在它內部,你可以定義一個OnTouchListener。

public final OnTouchListener mOnTouchListener = new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent rawEvent) { 
     return false; 
    } 
}; 

將ontouchlistener設置爲null不會將其重置爲默認定義。你仍然需要提供一個實際的監聽器。

+0

非常酷的想法,但你能詳細說明新類如何與'mWebView'交互? mWebView如何轉到mOnTouchListener?謝謝! – CQM 2011-07-19 23:05:10

+0

mWebView不是標準的Android Webview控件。相反,它是您創建的自定義控件,它僅僅是一個從WebView繼承的新類。 – Pete 2011-11-23 18:40:29

+0

順便說一句,如果你正在擴展'View'如'WebView',你不需要實現一個觸摸監聽器。 View有一個你實現的內置方法:'boolean onTouchEvent(MotionEvent event){...}'。創建觸摸監聽器的優點是,您可以在**其他類**中執行此操作,例如您已經定義的片段或活動。所以你不必創建另一個新班級。 – ToolmakerSteve 2016-10-20 18:44:10

23
webView.setOnTouchListener(null); 
+0

這是否刪除了聯繫偵聽器,以便功能將恢復正常,或者只是將偵聽器設置爲空,意味着webview在觸摸時不會執行任何操作? – NotACleverMan 2011-05-31 07:58:04

+0

感謝您的幫助,但我剛剛測試過,並且仍然存在相同的功能問題。 (例如,雙擊縮放不起作用) – NotACleverMan 2011-05-31 08:05:08

+0

如何使自定義onTouchListener並返回false? – Hein 2011-05-31 08:27:52

4

我一直在尋找在線幫助,並得到這個職位。 當我做

myView.setOnTouchListener(null); 

my myView停止響應觸摸。