티스토리 뷰

Android

Android spannable (textview)

Gibson 김형섭 2016. 7. 19. 18:34

안드로이드 텍스트뷰 텍스트에 속성주기


안드로이드에서 TextView에 setText시 text에 부분적으로 밑줄을 긋거나 색상을 바꾸거나 이미지를 중간에 삽입하거나 등이 필요 시 


Html을 이용하여 사용 가능하지만 SpannableString 클래스로도 사용 가능하다.


SpannableString spannableString = new SpannableString(text);

spannableString.setSpan(new ForegroundColorSpan(color), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

spannableString.setSpan(new UnderlineSpan(), targetStartIndex, targetEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

 이 외에도 여러 타입을 지원한다.   https://developer.android.com/reference/android/text/style/UpdateAppearance.html 참조

개인적으로 html보다 확장성이 좋아 애용하는 편이다.


예를 들면 

Util클래스로 따로 분류하여 어디서든 사용가능하게 하면 편리하다.


public static SpannableString getUnderLineColorText(String string, String targetString, int color) {
SpannableString spannableString = new SpannableString(string);
int targetStartIndex = string.indexOf(targetString);
int targetEndIndex = targetStartIndex + targetString.length();
spannableString.setSpan(new ForegroundColorSpan(color), targetStartIndex, targetEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new UnderlineSpan(), targetStartIndex, targetEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

return spannableString;
}


TextView textView = (TextView) findViewById(R.id.text);
String string = "가격은 200원 입니다.";
String targetString = "200원";
textView.setText(TextFormatUtils.getUnderLineColorText(string, targetString, getResources().getColor(R.color.colorAccent)));


이런식으로 응용이 가능하다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
more
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함