gpt4 book ai didi

android - 如何在 android 中使用 SearchView 小部件时突出显示过滤后的文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:54 26 4
gpt4 key购买 nike

我在我的应用程序中实现了 SearchView 小部件。它工作正常。现在我需要做的是,每当我在我的 SearchView Bar 中键入一个词时,过滤后的结果应该突出显示搜索到的词。喜欢:

enter image description here

我将此 SearchView 小部件用作:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.myMenu , menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView sv = new SearchView(getActivity());

// Changing the color of Searchview widget text field to white.
int searchSrcTextId = getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchEditText = (EditText) sv.findViewById(searchSrcTextId);
searchEditText.setTextColor(Color.WHITE);

sv.setOnQueryTextListener(this);
searchItem.setActionView(sv);
super.onCreateOptionsMenu(menu, inflater);
}

最佳答案

您可以为此使用 Spannable TextView。希望这个方法能帮到你

方法:

public static CharSequence highlightText(String search, String originalText) {
if (search != null && !search.equalsIgnoreCase("")) {
String normalizedText = Normalizer.normalize(originalText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "").toLowerCase();
int start = normalizedText.indexOf(search);
if (start < 0) {
return originalText;
} else {
Spannable highlighted = new SpannableString(originalText);
while (start >= 0) {
int spanStart = Math.min(start, originalText.length());
int spanEnd = Math.min(start + search.length(), originalText.length());
highlighted.setSpan(new ForegroundColorSpan(Color.BLUE), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
start = normalizedText.indexOf(search, spanEnd);
}
return highlighted;
}
}
return originalText;
}

return originalText 将突出显示文本。

关于android - 如何在 android 中使用 SearchView 小部件时突出显示过滤后的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25137400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com