2011-01-11 12 views
4

私はlongclicklistenerを実装するために次のような構造を持っています。それは私が構造が完全に間違っていないことを知っているので、私はHTMLリンクを含むwebview上のテキストをクリックすると動作します。onLongClickListenerがWebViewで機能しない

このリンクを今削除しました。リスナーはもうクリックしません。誰もがこの問題を知っていて、いくつかアドバイスをしていますか?

private View.OnLongClickListener mLongClickHandler = new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View view) { 
     ... 
     return true; 
    } 
}; 

...

mywebview.setOnLongClickListener(mLongClickHandler); 
+0

イベントは、実際のWebビューに到達する前にWebViewコンテンツによって消費されている可能性があります。 – Falmarri

+0

webviewはテキストを表示するだけです。そして、テキスト内のHTMLリンクを使って、これを長くクリックしてください。 – nob

+0

私はHTC Desire(Android 2.2.2)でも同様の問題があります:OnLongClickListenerniverはリンク上でクリックが発生した場合を除いて決して起動しませんでした。この問題は、Galaxy S2(Android 2.3.3で動作)では発生しません。 – Gilbou

答えて

3

私は自分でlongclickアクションのクローンを作成するために、今試してみました。これは動作しますが、ほんの数回です。特定の時間の後、onTouch-Eventはもう呼び出されません...提案?あなたのWebViewの

private Runnable copyTextAfterDelay=new Runnable() { 
    public void run() { 
     ... 
    } 
}; 

...

 myWebView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         mTimerHandler.removeCallbacks(copyTextAfterDelay); 
         mTimerHandler.postDelayed(copyTextAfterDelay,1000); 
         break; 
        case MotionEvent.ACTION_UP: 
         mTimerHandler.removeCallbacks(copyTextAfterDelay); 
         break; 
        case MotionEvent.ACTION_MOVE: 
         mTimerHandler.removeCallbacks(copyTextAfterDelay); 
         break; 
       } 
       return false;     
      } 
      }); 
3

オーバーライドonTouchのMethodeのとACTION_DOWNイベントのためにtrueを返します。 これにより、ダウンイベントを消費します。

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      return true; 
     } 
    } 
関連する問題