만족
[Android] TextView에 부분 폰트 스타일 적용하기 본문
[Android] TextView에 부분 폰트 스타일 적용하기
FrontEnd/Android Satisfaction 2021. 7. 5. 21:24
저런걸 어떻게 하는지 알아볼 것이다.
방법1: SpannableString
public class ViewUtil {
public static SpannableString colorString(int color, String text, String... wordsToColor) {
SpannableString coloredString = new SpannableString(text);
for (String word : wordsToColor) {
int startColorIndex = text.indexOf(word);
int endColorIndex = startColorIndex + word.length();
if (startColorIndex >= 0)
coloredString.setSpan(new ForegroundColorSpan(color), startColorIndex, endColorIndex,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return coloredString;
}
...
}
위의 colorString 메서드를 원하는 곳에 집어넣는다.
(나의 경우엔 ViewUtil클래스에 넣었다)
textView.setText(ViewUtil.colorString(getResource().getColor(R.color.red), "안녕하세요", "안녕"));
적용할 때 String을 그냥 넣지 말고, colorString으로 감싸서 넣는다.
매개변수는 다음과 같다.
colorString(색상코드, textView에 적용할 스트링 전문, 색상코드를 적용할 텍스트)
이제 안녕하세요 처럼 표시된다.
방법2: HTML(Spanned)
public class ViewUtil {
public static Spanned colorString(String color, String text, String... wordsToColor) {
String result= new String(text);
for (String word : wordsToColor) {
result= result.replaceAll(word, String.format("<font color='%s'>%s</font>", color, word);
}
return Html.fromHtml(result);
}
...
}
위의 colorString 메서드를 원하는 곳에 집어넣는다.
(나의 경우엔 ViewUtil클래스에 넣었다)
HTML형식의 String에서 표현 가능한 속성들을 HTML 타입의 데이터로 변환하는 함수다.
textView.setText(ViewUtil.colorString("#FF0000", "안녕하세요", "안녕"));
색상 코드를 전달하거나, HTML에서 표현 가능한 색상값(red, green, aqua 등)을 스트링으로 전달해 준다는 점이 방법1과 다르다.
아무튼 얘도 안녕하세요 처럼 표시된다.
'FrontEnd > Android' 카테고리의 다른 글
[Android] elevation을 설정했음에도 그림자(shadow)가 표시되지 않는 문제 (1) | 2022.04.10 |
---|---|
[Android] 웹뷰 앱 제출 시 주의사항 (개발자 프로그램 정책 위반) (0) | 2021.07.16 |
[Android] 'int java.math.RoundingMode.ordinal()' on a null object reference (0) | 2021.06.23 |
[Android] 이미지에 색상(tint)을 적용하는 방법 (0) | 2021.06.19 |
[Android] SQLite Database (0) | 2021.06.14 |
Comments