Android 開發-Android開發論壇推薦:http://www.eoeandroid.com/android
悲催的寫代碼的路上老是遇到各類各樣的問題,這不又碰到了一個頭疼的問題!關於Webview中沒法觸發手勢方法的解決方法,我在一個頁面裏放入了一個webview組件,並將其組件鋪滿屏幕,全屏幕除了下面的導航欄其他都是這個webview,後來我想在webview中觸發滑動手勢的onfling方法,在webview還沒加載完網頁內容以前正常,但是webview加載完網頁以後,就沒法觸發方法了,通過上網已大艘,終於找到了解決方法,!以下web
通常咱們用於接收GestureDetector對象的方法是OnTouchevent();,而在View組件佔用了屏幕空間以後,這個方法就無效了,只有換成 dispatchTouchEvent方法纔有效! 很少說,上代碼啦!!!app
package com.example.rss_test;ide
import com.example.rss_test.util.MyGestureListener;ui
import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.StrictMode; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.Window; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast;this
@SuppressLint("SetJavaScriptEnabled") public class NewsContent extends Activity{ WebView webview; GestureDetector detector; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState); setContentView(R.layout.news_content); webview=(WebView)findViewById(R.id.newscontent_webview); webview.getSettings().setJavaScriptEnabled(true);//設置支持JS webview.getSettings().setSupportZoom(true);//實現縮放 detector = new GestureDetector(this, new MyGestureListener(this)); webview.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}); webview.loadUrl("http://www.163.com"); } /** * 把觸摸事件交給手勢識別對象 */url
@Override public boolean dispatchTouchEvent(MotionEvent ev) { //注意這裏不能用ONTOUCHEVENT方法,否則無效的 Toast.makeText(NewsContent.this, "jinru", 1).show(); detector.onTouchEvent(ev); webview.onTouchEvent(ev);//這幾行代碼也要執行,將webview載入MotionEvent對象一下,何況用載入把,不知道用什麼表述合適 return super.dispatchTouchEvent(ev); }
}spa
最終效果圖:看!TOAST被執行了!code
Android 開發 http://www.eoeandroid.com/對象