2017-10-04 225 views
-2

Hy everyone, 我有WebView中的超鏈接問題。 請注意,我已經瀏覽了所有解決類似問題的鏈接,但沒有發現任何解決完全相同問題的鏈接。GestureScanner功能覆蓋超鏈接點擊

事實上,我有一個自定義的Web視圖,它實現了某些手勢上的某些操作。我想這是禁用超鏈接的觸摸。

我想知道怎樣才能保持姿勢,使超鏈接工作,並呼籲shouldOverrideUrlLoading

這是自定義Web視圖我有:

public class newBTWebView extends WebView implements QuickAction.OnDismissListener, PopoverView.PopoverViewDelegate, GestureDetector.OnGestureListener { 
public newBTWebView(Context context) { 
    super(context); 
    this.ctx = context; 
    setup(context); 
    init(context); 

} 

public newBTWebView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.ctx = context; 
    setup(context); 
    init(context); 

} 

public void init(Context context) { 
    this.context = context; 

    setInitialScale(100); 
    this.getSettings().setJavaScriptEnabled(true); 

    Configuration conf = getResources().getConfiguration(); 

    int screenLayout = 1; 
    try 
    { 
     Field field = conf.getClass().getDeclaredField("screenLayout"); 
     screenLayout = field.getInt(conf); 
    } 
    catch (Exception e) { 

    } 

    loadingNewChap = false; 

    screenType = screenLayout & 15; 

    gestureScanner = new GestureDetector(this); 
    this.setVerticalScrollBarEnabled(false); 
    this.setHorizontalScrollBarEnabled(false); 


    this.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      int action = event.getAction(); 

      if(event.getAction() == MotionEvent.ACTION_DOWN) 
      { 
       countDown++; 
      } 

      if(event.getAction() == MotionEvent.ACTION_UP && isLongPress) 
      { 
       //do selection 

      } 
      return gestureScanner.onTouchEvent(event); 
     } 
    }); 
} 

我也實施了手勢的功能: onFlingDo,onSingleTapUp,onShowPress,onLongPress,onDown

這是我如何調用web視圖的活動:

testWV = (newBTWebView) findViewById(R.id.mywebview1); 
testWV.setVerticalScrollBarEnabled(false); 
testWV.setHorizontalScrollBarEnabled(false); 

testWV.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
      super.shouldOverrideUrlLoading(view, url); 
      return false; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
    } 
} 

任何想法如何保持手勢並仍然捕獲超鏈接點擊?

+0

親愛的選民,請在投票中說明背後的原因,以便我可以解決它。謝謝。 – coder

回答

0

請使用下面的代碼將解決這個問題:

testWV .setWebChromeClient(new WebChromeClient()); 
testWV .getSettings().setJavaScriptEnabled(true); 
testWV .getSettings().setPluginsEnabled(true); 
testWV .loadUrl(url); 
testWV .setWebViewClient(new WebViewClient(){ 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    view.loadUrl(url); 
    return true; 
} 
}); 
+0

感謝您的回答,請注意,超鏈接甚至沒有單擊以調用此函數shouldOverrideUrlLoading – coder

0
this.setOnTouchListener(new View.OnTouchListener() { 

    public boolean onTouch(View v, MotionEvent event) { 
     int action = event.getAction(); 

     if(event.getAction() == MotionEvent.ACTION_DOWN) 
     { 
      countDown++; 
     } 

     if(event.getAction() == MotionEvent.ACTION_UP && isLongPress) 
     { 
      //do selection 

     } 
     gestureScanner.onTouchEvent(event); 
     return false; 
    } 
}); 

在onTouch回調,返回false來實現默認觸摸行爲。

+0

我會嘗試以下並回復您,感謝您的貢獻 – coder