【问题标题】:Highlight Text in TextView or WebView在 TextView 或 WebView 中突出显示文本
【发布时间】:2011-01-08 08:49:46
【问题描述】:

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

我认为EditText 是可能的

Highligh text in a EditText

我想在TextViewWebView 中做同样的事情。
这可能吗?

【问题讨论】:

标签: android android-widget


【解决方案1】:

启用 TextView 的 Spannable 存储! 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);

【讨论】:

  • 谢谢,一切正常。但我认为通过以下方式创建 Spannable Text: Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString);优于 textView.setText() 和 textView.getText()。
  • 有什么方法可以创建一个合理的文本视图,然后为其设置多个跨度?
  • 有没有办法在 web 视图中显示突出显示的匹配项?
  • 很好的答案对我有帮助,但与此相关的 Android API 有两件事让我印象深刻:1) 这仍然是 9 年后的最佳方法吗?似乎会有更好/更清洁的 API 调用。 2)您必须设置视图项的实际文本值才能设置样式,这很奇怪。这感觉像是关注点冲突(相对于关注点分离)。感觉就像风格和内容混合在一起。
【解决方案2】:

您也可以将这一解决方案用于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.htm

【讨论】:

    【解决方案3】:

    对于TextView

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-14
        • 2021-06-26
        • 1970-01-01
        • 2011-11-21
        • 1970-01-01
        • 2018-02-10
        • 2014-01-29
        • 1970-01-01
        相关资源
        最近更新 更多