Android TextView 문자열 키워드 변색 방법

1.문자열 키워드 변색
인터페이스 에 표시 할 때,때때로 특정한 문자열 의 중점 을 표시 해 야 한다
다음 그림 에서 보 듯 이:

다음 방법 이 있 습 니 다.이 방법 은 고정된 문자열 에 대한 바늘 이 며,변색 이 필요 한 텍스트 위 치 를 스스로 계산 해 야 합 니 다.코드 는 다음 과 같 습 니 다.

public static CharSequence setColor(Context context, String text, String text1, String text2) {
 SpannableStringBuilder style = new SpannableStringBuilder(text);
//    “  ”  ,0-text1.length()
 style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.colorPrimary)), 0, text1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//    “   ”  ,text1.length() + 6-text1.length() + 6 + text2.length()
 style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.colorAccent)), text1.length() + 6, text1.length() + 6 + text2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 return style;
}
2.검색 키워드 변색
검색 키 워드 를 변색 시 키 려 면 키워드 와 문자열 사이 의 일부 글자 가 같은 지 비교 한 다음 같은 글 자 를 색상 으로 바 꾸 면 됩 니 다.
먼저 한 문자열 이 다른 문자열 을 포함 하고 있 는 지 판단 하 는 방법 은 두 가지 가 있 습 니 다.
1.4.567914.이 방법 은 키워드 의 위 치 를 찾 고 4.567914.값 을 되 돌려 주 며 찾 지 못 하면 되 돌려 줍 니 다-1;
2string.indexOf("xxx"); 이 방법 은 한 문자열 에 키 가 포함 되 어 있 는 지 확인 하기 위해 서 입 니 다int값 을 되 돌려 줍 니 다.
아래 이 방법 에 사용 되 는 것 은 index Of()입 니 다.

키 워드 를 변색
코드 는 다음 과 같 습 니 다:

public static CharSequence matcherSearchText(int color, String string, String keyWord) {
 SpannableStringBuilder builder = new SpannableStringBuilder(string);
 int indexOf = string.indexOf(keyWord);
 if (indexOf != -1) {
 builder.setSpan(new ForegroundColorSpan(color), indexOf, indexOf + keyWord.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
 }
 return builder;
}
3.검색 키워드 모두 변색
상술 한 방법 은 매우 간단 합 니 다.그 렇 죠?그러나 분명 한 문제 가 있 습 니 다.위의 그림 에 표 시 된 것 은 모든 키 워드 를 변색 시 키 지 않 고 첫 번 째 변색 만 할 수 있다 는 것 입 니 다.
아래 의 이 방법 은 모든 키워드 가 변색 되면 다른 방법 이 필요 하 다 는 것 이다.

모든 키워드 변색
코드 는 다음 과 같 습 니 다:

public static SpannableString matcherSearchText(int color, String text, String keyword) {
 SpannableString ss = new SpannableString(text);
​
 Pattern pattern = Pattern.compile(keyword);
 Matcher matcher = pattern.matcher(ss);
​
 while (matcher.find()) {
 int start = matcher.start();
 int end = matcher.end();
 ss.setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 }
​
 return ss;
}
4.검색 키 워드 는 모두 변색 되 며 대소 문자 구분 없 음
상술 한 방법 은 여전히 매우 간단 하 다.그렇지?그러면 문제 가 또 생 겼 다.이 방법 은 똑 같은 글 자 를 모두 표시 하 는 것 이지 만 알파벳 이 라면 대소 문자 문 제 를 만 날 수 있 고 검색 은 대소 문 자 를 구분 하지 않 아 도 된다.
먼저 두 가지 String 방법 을 소개 합 니 다.4.567914.와 4.567914.문자열 의 자 모 를 대문자 나 소문 자로 통일 하기 위해 서 입 니 다.(다른 문 자 는 변경 되 지 않 습 니 다)
목적 을 달성 하려 면 간단 하 다.비교 할 때 먼저 알파벳 대소 문 자 를 통일 하면 원 하 는 효 과 를 얻 을 수 있다.예 를 들 어'a'를 검색 하면 모든'a'와'A'가 변색 된다.
주 1:판단 할 때 만 대소 문 자 를 통일 하고 최종 표시 할 때 서버 가 준 문자열 을 표시 합 니 다.
주 2:이 방법 으로 는 정규 가 필요 없고 간단 하고 편리 하 다.정칙 을 쓰 지 않 으 려 고 인터넷 에서 오랫동안 비교적 명확 한 답,비극 을 찾 았 다.)

모든 키워드 변색,대소 문자 구분 없 음
코드 는 다음 과 같 습 니 다:

public static SpannableString matcherSearchTitle(int color, String text, String keyword) {
 String string = text.toLowerCase();
 String key = keyword.toLowerCase();
​
 Pattern pattern = Pattern.compile(key);
 Matcher matcher = pattern.matcher(string);
​
 SpannableString ss = new SpannableString(text);
 while (matcher.find()) {
 int start = matcher.start();
 int end = matcher.end();
 ss.setSpan(new ForegroundColorSpan(color), start, end,
     Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 }
 return ss;
}
총결산
이상 은 제 가 정리 한 안 드 로 이 드 가 TextView 문자열 의 키 워드 를 변색 시 키 는 방법 입 니 다.본 논문 의 내용 이 여러분 의 안 드 로 이 드 개발 자 들 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기