안드로이드 textview의 반만 색을 바꿀수 있을까요?
조회수 2219회
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
텍스트 단위별로 색깔을 주고 싶으시다면 두가지 방법이 있습니다.
([ ] 로 표시해놓은 부분은 코드 작성 시 바꿔야 합니다)
- Html 사용
// kotlin 코드 val htmlText = Html.fromText("<font color='#[hex 색상1]'>[글자1]</font><font color='#[hex 색상2]'>[글자2]</font>") [텍스트 뷰].text = if(Build.VERSION.SDK_INT < 24) @Suppress("DEPRECATION") Html.fromHtml(htmlText) else Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT)
// 자바 코드 String htmlText = Html.fromHtml("<font color='#[hex 색상1]'>[글자1]</font><font color='#[hex 색상2]'>[글자2]</font>"); f(Build.VERSION.SDK_INT < 24) @SuppressWarnings("deprecation") [텍스트 뷰].setText(Html.fromHtml(htmlText)); else [텍스트 뷰].setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
이건 매우 기초적인 html 태그들(b, br, p, em 등등) 은 받아서 밑에 소개할 SpannableString과 비슷한 것으로 변환시켜줍니다. (Spanned인가?) " " 안에 '매우 기초적인 html 태그들' 을 넣어도 됩니다.
- SpanableString 사용
// kotlin 코드 SpannableString text = SpannableString([텍스트]) text.setSpan(ForegroundColorSpan([색상 코드]), [시작 위치], [끝 위치], Spanned.SPAN_INTERMEDIATE) text.setSpan(ForegroundColorSpan([색상 코드]), [시작 위치], [끝 위치], Spanned.SPAN_INTERMEDIATE) [텍스트 뷰].text = text // ...
ktx를 쓰신다면
text.setSpan(ForegroundColorSpan([색상 코드]), [시작 위치], [끝 위치], Spanned.SPAN_INTERMEDIATE)
->text[[시작 위치]..[끝 위치]] = ForegroundColorSpan([색상 코드])
(예:text[0..4] = ForegroundColorSpan(Color.rgb(12,34,56))
) 라고 바꿔도 됩니다.// java 코드 SpannableString text = new SpannableString([텍스트]); text.setSpan(new ForegroundColorSpan(), [시작 위치], [끝 위치], Spanned.SPAN_INTERMEDIATE); text.setSpan(new ForegroundColorSpan(), [시작 위치], [끝 위치], Spanned.SPAN_INTERMEDIATE); // ... [텍스트 뷰].setText(text);
ForegroundColorSpan 이외에도 여러 종류가 있으니 쓰시면 됩니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 감사합니다! 알 수 없는 사용자 2019.5.20 02:43
- 아 그리고 @Suppress, @SuppressWarnings 관련 코드를 조금 고쳤습니다. 알 수 없는 사용자 2019.5.20 16:42
-
댓글 입력