web-dev-qa-db-ja.com

TextViewまたはWebViewでテキストを強調表示する

TextViewまたはWebViewのテキストを強調表示することは可能ですか?

EditTextで可能だと思います

EditTextのHighlighテキスト

TextViewまたはWebViewでも同じことをしたいと思います。
それは可能ですか?

21
Alexi

textViewのSpannableストレージを有効にしてください!デフォルトでは、EditTextのスパン可能なストレージはtrueです。

そう

TextView myTV = (TextView)findViewById(R.id.textView1);
String  textString = "StackOverFlow Rocks!!!"; 
Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString);
spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 14, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTV.setText(spanText);
60
Jorgesys

同様に、この1つのソリューションをWebViewに使用できます。 findAllAsyncに電話する

_webview.findAllAsync(((EditText) findViewById(R.id.edit)).getText().toString());
_

FindListenerWebViewに追加するよりも

_    webview.setFindListener(new FindListener() {

        @Override
        public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) {
            Toast.makeText(getApplicationContext(), "Matches: " + numberOfMatches, Toast.LENGTH_LONG).show();
        }
    });
_

結果をwebview.findNext(false);で繰り返します。ここで、false/trueは方向を示します。

しかし、このソリューションは_API level 16_に追加されました!!!代わりに、higlihting用にJavaScriptを設定できます http://www.nsftools.com/misc/SearchAndHighlight.htm

1
validcat