在 TextView 或 WebView 中突出显示文本

发布于 2024-08-18 20:05:38 字数 333 浏览 5 评论 0原文

是否可以在 TextViewWebView 中突出显示文本?

我看到它可以在 EditText

突出显示 EditText 中的文本

我想在 TextViewWebView 中执行相同操作。
那有可能吗?

Is it possible to Highlight text in a TextView or WebView?

I see it is possible in a EditText

Highligh text in a EditText

I'd like to do the same in TextView or WebView.
Thats Possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

倦话 2024-08-25 20:05:38

启用 TextView 的 Spanable 存储!
默认情况下,EditText 中的 Spannable 存储为 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);

enable TextView's Spannable storage!
by default Spannable storage in EditText is true.

so

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);
走过海棠暮 2024-08-25 20:05:38

您也可以将这一解决方案用于 WebView。调用 findAllAsync

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

并将 FindListener 添加到 WebView

    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 来进行高亮显示 - http://www.nsftools.com/misc/SearchAndHighlight。嗯

As well you could use this one solution for WebView. Call findAllAsync

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

than add FindListener to WebView

    webview.setFindListener(new FindListener() {

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

Iterate in result with webview.findNext(false); where false/true shows the direction.

But this solution was added in API level 16!!! Instead of you can setup JavaScript for higlihting - http://www.nsftools.com/misc/SearchAndHighlight.htm

半世晨晓 2024-08-25 20:05:38

对于 TextView

您可以在 Activity、片段或适配器中使用 textView.setTextIsSelectable(true)

For TextView

You can use textView.setTextIsSelectable(true) in your activity or fragment or adapter.

你是暖光i 2024-08-25 20:05:38

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

我的回答就在这里,希望对您有所帮助:

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

Actually, you do not have to develop this feature by yourself. You just need to use EditText instead TextView, while you set the android:editable of EditText to false.

My answer is here, hope it may help you:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文