【发布时间】:2011-01-08 08:49:46
【问题描述】:
是否可以突出显示 TextView 或 WebView 中的文本?
我认为EditText 是可能的
我想在TextView 或WebView 中做同样的事情。
这可能吗?
【问题讨论】:
-
在 webview 中怎么做?
是否可以突出显示 TextView 或 WebView 中的文本?
我认为EditText 是可能的
我想在TextView 或WebView 中做同样的事情。
这可能吗?
【问题讨论】:
启用 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);
【讨论】:
您也可以将这一解决方案用于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
【讨论】:
对于TextView
您可以在您的活动、片段或适配器中使用textView.setTextIsSelectable(true)。
【讨论】:
实际上,您不必自己开发此功能。你只需要使用 EditText 而不是 TextView,同时将 EditText 的 android:editable 设置为 false。
我的答案就在这里,希望对你有所帮助:
【讨论】: