티스토리 뷰
안드로이드 텍스트뷰 텍스트에 속성주기
안드로이드에서 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)));
이런식으로 응용이 가능하다.
'Android' 카테고리의 다른 글
안드로이드 Network throwable error code (0) | 2016.07.25 |
---|---|
Android statusbar 색상바꾸기 (0) | 2016.07.19 |
안드로이드 TextView Html (0) | 2016.07.13 |
Android fragmentManager getFragment (1) | 2016.06.22 |
안드로이드 액티비티간 데이터전달 (인텐트 기초) (0) | 2016.04.06 |
댓글