21

是否可以突出显示 aTextView或中的文本WebView

我看到这是可能的EditText

在 EditText 中突出显示文本

我想在TextViewor中做同样的事情WebView
那可能吗?

4

4 回答 4

61

启用 TextView 的 Spanable 存储!默认情况下,EditText 中的 Spannable storage 为 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);
于 2010-01-22T20:14:51.103 回答
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!!!而不是您可以设置 JavaScript 以进行 higlihting - http://www.nsftools.com/misc/SearchAndHighlight.htm

于 2013-10-28T11:00:35.007 回答
0

为了TextView

您可以textView.setTextIsSelectable(true)在您的活动或片段或适配器中使用。

于 2021-03-08T16:03:28.820 回答
-1

实际上,您不必自己开发此功能。您只需要使用 EditText 而不是 TextView,同时将 EditText 的 android:editable 设置为 false。

我的答案就在这里,希望对你有帮助:

https://stackoverflow.com/a/11026292/966405

于 2012-06-14T03:39:37.763 回答