2013-08-22 7 views
5

API 11+では、WebViewのテキストを長押しすると、コンテキストアクションバー(CAB)が表示されます。私は自分のActionMode.Callbackを実装することが正解ではないので、既存のメニュー項目をオーバーライドする必要はありません。私は、デフォルトのCABがいつ表示されるかを知りたいので、WebViewでスクロールをロックできるようにテキスト選択が開始されていることがわかっています。何かご意見は?(Android)ウェブビューでテキストが選択されたことを検出する方法はありますか?

+0

。 –

答えて

0

デフォルトのCABが画面に表示されているときを知りたい場合は、ACTION_UP後にそれの存在を確認することができます:私はCABが表示されたときに、私のヘッダーバーを非表示にしたいんだ

public class MainActivity extends ActionBarActivity { 
WebView mWebView; 
boolean mSelected; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mWebView = (WebView) findViewById(R.id.wvExample); 
    mWebView.loadUrl("file:///android_asset/webpage.html"); 

    mWebView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_UP) { 

       View root = getWindow().getDecorView(); 
       View cabButton = root.findViewById(R.id.action_mode_close_button); 

       if (cabButton != null && !mSelected) { 
        Toast.makeText(getApplicationContext(), "Text is now selected", Toast.LENGTH_SHORT).show(); 
        mSelected = true; 
       } else { 
        mSelected = false; 
        Toast.makeText(getApplicationContext(), "No Text Selected", Toast.LENGTH_SHORT).show(); 
       } 

      } 

      return false; 
     } 
    }); 
..... 
関連する問題