以前、WebViewの長押しについて書きましたが
2.3からどうも挙動が変わってるみたいなのでメモしておきます。
(ついでに前回の記事で一部ミスってたので修正しておきました。)
ざっと確認したところ、WebViewのどこを押しても長押しのイベントが走るみたいです。
確認するためのコードは以下のようになります。前回とほぼ一緒ですが。
mWebView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.d(TAG, "onLongClick"); WebView webView = (WebView) view; WebView.HitTestResult hr = webView.getHitTestResult(); Log.d(TAG, "HitTestResult.getType:" + hr.getType()); Log.d(TAG, "HitTestResult.getExtra:" + hr.getExtra()); return false; } });
hr.getType()でどんな箇所を長押しされたか判定できるようになっています。
どういう値があるかはリファレンスを参照してください。
リファレンス:WebView.HitTestResult | Android Developers
空白の箇所とか文字の箇所を長押しした時にはhr.getExtra()はnullを返すようになっています。
あと、文字の箇所が選択できてクリップボードにもコピー出来るようになってました。
ただし、onLongClickでtrueを返すと選択できなくなりますので。
イベントが取得できるようになったのはいいことですが、以前ロジックとかも見直さないとダメっぽいですねぇ・・・
あ、ちなみに実機は無いのですべてエミュレーター上で確認しました。