Android TextView 문자열 키워드 변색 방법
인터페이스 에 표시 할 때,때때로 특정한 문자열 의 중점 을 표시 해 야 한다
다음 그림 에서 보 듯 이:
다음 방법 이 있 습 니 다.이 방법 은 고정된 문자열 에 대한 바늘 이 며,변색 이 필요 한 텍스트 위 치 를 스스로 계산 해 야 합 니 다.코드 는 다음 과 같 습 니 다.
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;
2
string.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 문자열 의 키 워드 를 변색 시 키 는 방법 입 니 다.본 논문 의 내용 이 여러분 의 안 드 로 이 드 개발 자 들 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.