10

問題のドメイン:AndroidWebViewベースのePubフォーマットリーダー-

JavaScriptメソッドを介してアクセスできるテキストハイライトが必要です(つまり、emをオンにする、オフにする、電子メールで保存するなど)

知っている人は、私が間違っている場合は訂正してください:WebViewでのテキスト選択中-

基本的に、TextViewオーバーレイ(WebTextView)が渡されます。これは、視覚的以外の基になるhtmlに添付されていません(すべてを並べてシームレスにするのは良い仕事です)。そこでTextSelectionActionModeを実行し、ClipboardManagerが提供されます。結果とともに...明確にするために、WebViewを使用した実際のHTMLは、このストックプロセス中のどの時点でも実際には選択されません。そのため、JavaScriptはアクションの結果にアクセスできません。

したがって、この動作を3.1以降で機能させるために、WebViewに独自の選択を実装するためのいくつかの可能な計画があります。これは、隅から見えないかどうか疑問に思っている部分です:)- -

1)選択モードを開始するロングクリックのMOTION_DOWNをキャプチャし、組み込みのTextSelection ActionModeをオーバーライドします(クライアントのブランドを提供するために-私が見つけた方法は非常にハックで痛いです)ドラッグを見て、MOTION_UPの位置をキャプチャし、これらをマップしますWebViewにコーディネイトし、コーディネイトに基づいて選択します(テキストをClipboardManagerによってキャプチャされたものと比較しながら)

2)独自の「WebTextView」を作成し(全体が機能します笑)、それほどハックされていない独自のActionModeを作成し、上記のすべてを実行します。

3)ストック選択プロセスによって生成されたMotionEventsを使用し、これによってトリガーされたストックTextSelectionActionModeを何らかの方法でオーバーライドします。

これらは私が見るオプションです。うまくいけば、これに対する私の近接性と欲求不満が、より単純な(組み込みのソリューションとして読む)ソリューションに私を盲目にしました。

お時間をいただき、ありがとうございました。

4

2 に答える 2

12

これは 2.2 - 4.0.3 で動作しました。私は JavaScript インターフェイスを使用し、すべてのタッチをそれに渡しました。このソリューションはうまく機能しているようで、サンプル プロジェクトを github に置きました。github プロジェクトには、assets フォルダーに必要な js と、テスト ページをロードし、選択を処理するために必要なすべてのメソッドを実装するテスト ページと Web ビューが含まれています。github プロジェクトへのリンクはhttps://github.com/btate/BTAndroidWebViewSelectionです。それを持っています。

于 2012-07-06T18:46:40.177 に答える