Android アプリケーションで、WebView
. Google Play book にある機能に似ています。これを達成する方法を知っている人はいますか?
WebView
私のコンテンツはhtml形式であるため、を使用しています。
基本的にこの効果について話します:
API レベル 11 から、TextView
のtextIsSelectable
flagを使用できます。
編集: 質問は特に言及するように編集されていますがWebView
、OP @Suhail のコメント「私のコンテンツは html 形式です」はTextView
、いくつかの基本的な HTML もレンダリングできるため、完全に失格ではありません。
WebView を使用している場合は、PDF をレンダリングできる Mozilla PDF.JS を統合してみてください。画像も含めることができます。
テキストを選択するときに表示される青色の選択範囲は、標準の Android 環境の一部です。したがって、カスタム コードを必要とせずに、標準の webview で動作するはずです。=> 私はもはやこれが真実であるとは確信していません。そうではないようです。
ただし、緑 (黄、オレンジ、赤など) の選択はカスタムです。
選択イベントから選択したテキストを読み取り、その情報を使用して html コンテンツを更新し、背景色セットでテキストをスパンでラップすることができます。
代替アプローチは、javascript を使用し、webview で javascript を有効にすることです。ただし、それを行う方法はわかりません。
そのアプローチを確認するためのいくつかのソースは、https://github.com/btate/BTAndroidWebViewSelectionとAndroid: WebView からテキストを選択し、onclick で強調表示する方法です。
WebView の詳細からのテキスト選択
テキスト選択を機能させるWebView
には、次のスニペットを使用できます (この質問から)。(コンテキスト)メニューからのボタンクリック(またはその他のイベント)でこれをトリガーします。
private void emulateShiftHeld(WebView view)
{
try
{
KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(view);
Toast.makeText(this, "select_text_now", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
Log.e("dd", "Exception in emulateShiftHeld()", e);
}
}