2017-09-18 1 views
-5

내 앱은 Sqlite FTS (및 Android 검색 도구)를 구현합니다. TextView에 입력 단어/문자열이 강조 표시된 결과를 원합니다.Android : 결과에서 사용자 입력 단어 강조 표시

사용자 입력 문자열 "Cats rule"이 두 단어가 모든 반환 된 결과 집합에서 다른 글꼴 색으로 나타나게하고 싶습니다.

누구든지 나를 안내 할 수 있습니까?

ListViewCursorAdapter과 함께 사용하고 있습니다 (이 정보가 필요한 경우).

감사합니다.

UPDATE

이 코드는 단어를 강조한다. 나는 그것을 해결 여러 번

final SpannableStringBuilder spannableEng = new SpannableStringBuilder(english); 
     final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED); 

     for (String word : qStr) { 
      final Pattern p = Pattern.compile(word, Pattern.CASE_INSENSITIVE); 
      final Matcher matcher = p.matcher(english); 

      while (matcher.find()) { 
       spannableEng.setSpan(
         spanEng, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 
       ); 
      } 
     } 
     viewHolder.engTextV.setText(spannableEng); 

업데이트 2 이있는 경우 그러나 그것은 단어의 마지막에 출현을 강조한다. 내 대답을 아래에서보십시오.

답변

0

사람이 final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED);는 루프 내부에 있는지 확인합니다 비슷한 질문

final SpannableStringBuilder spannableEng = new SpannableStringBuilder(english); 

     for (String word : qStr) { 
      final Pattern p = Pattern.compile("\\b"+word+"\\b", Pattern.CASE_INSENSITIVE); 
      final Matcher matcher = p.matcher(english); 
      while (matcher.find()) { 
       final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED); 
       spannableEng.setSpan(
         spanEng, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 
       ); 
      } 
     } 
     viewHolder.engTextV.setText(spannableEng); 

에 대한 답변을 찾고됩니다.

관련 문제