일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 한달독서
- 좌식테이블
- 목적중심리더십
- 끝말잇기
- 리얼하다
- 북한살둘레길
- 베드트레이
- 슬기로운 온라인 게임
- 함수형 프로그래밍
- T자형인재
- 1일1커밋
- 목적 중심 리더십
- 면접
- 재택근무
- 어떻게 나답게 살 것인가
- 베드테이블
- 아비투스
- 소프시스 밤부 좌식 엑슬 테이블
- 자취필수템
- 지지않는다는말
- 프래그먼트
- 소프시스
- 테트리스
- 한단어의힘
- 한달브런치북만들기
- 브런치작가되기
- 안드로이드
- 캐치마인드
- 한달어스
- 커스텀린트
- Today
- Total
정상에서 IT를 외치다
[Android, SpannableStringBuilder] textview 에서 문자 일부 수정 하기 본문
SpannableStringBuilder 을 사용하면
코드상에서 TextView 에 넣을 문자 일부의 색, 크기, 스타일을 변경할 수 있습니다.
String title = "Black-Jin";
String str = title + "의 티스토리로 놀러오세요";
SpannableStringBuilder ssb = new SpannableStringBuilder(str);
ssb.setSpan(new StyleSpan(Typeface.BOLD), 0, title.length()
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Style
ssb.setSpan(new ForegroundColorSpan(Color.BLUE), 0, title.length()
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Color
ssb.setSpan(new AbsoluteSizeSpan(50), 0, title.length()
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Sizessb.setSpan(new UnderLineSpan(), 0, title.length()
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // UnderLine
textView.setText(ssb);
Black-Jin의 티스토리로 놀러오세요 -> Black-Jin의 티스토리로 놀러오세요
이렇게 바뀝니다.~!~!
사용법은 위와 같고 setSpan 에 대해 좀 더 설명하겠습니다.
/**
* Mark the specified range of text with the specified object.
* The flags determine how the span will behave when text is
* inserted at the start or end of the span's range.
*/
public void setSpan(Object what, int start, int end, int flags) {
setSpan(true, what, start, end, flags, true/*enforceParagraph*/);
}
인자는 위와 같고 start 변수 에서부터 end 변수까지를 what 의 설정으로 변경합니다.
what 은 어떤 변화를 줄 건지 선택하는 값으로
1. 스타일 변경
new StyleSpan(Typeface.BOLD)
글씨 스타일을 변경합니다.
Typeface 의 종류로는 다음 4가지가 있습니다.
public static final int NORMAL = 0;
public static final int BOLD = 1;
public static final int ITALIC = 2;
public static final int BOLD_ITALIC = 3;
2. 색 변경
new ForegroundColorSpan(Color.BLUE)
색을 변경하는 값으로 Color.Blue 처럼 내장되어 있는 함수를 사용하시거나
Color.parseColor("#000000") 와 같이 컬러의 hex 값을 집적 입력해 줘도 됩니다.
3. 크기 변경
new AbsoluteSizeSpan(50)
그냥 숫자를 입력하면 pixel 값으로 들어갑니다. 이를 dp 값으로 변경할려면
/**
* Set the text size to <code>size</code> physical pixels,
* or to <code>size</code> device-independent pixels if
* <code>dip</code> is true.
*/
public AbsoluteSizeSpan(int size, boolean dip) {
mSize = size;
mDip = dip;
}
위와 같은 생성자가 있기 때문에
new AbsoluteSizeSpan(50, true)
true 값을 넣어주면 dp 로 자동 전환됩니다.
start 는 시작 값으로
Black-Jin의 티스토리로 놀러오세요 에서 맨 앞을 0 부터 해서 한자리씩 증가합니다. 띄어쓰기도 포함이 되는데요
"B": -> start 가 0 이고
"의" -> start 가 9 이고
"티" -> start 가 11 입니다.
end 는 마지막 값으로
Black-Jin의 티스토리로 놀러오세요 에서 맨 앞을 1 부터 해서 한자리씩 증가합니다. 띄어쓰기도 포함이 되는데요
"B": -> end 가 1 이고
"의" -> end 가 10 이고
"티" -> end 가 12 입니다.
마지막으로 Flag 에 대한 설명은 아래 안드로이드 공식 사이트에 맡기겠습니다.
https://developer.android.com/reference/android/text/Spanned.html
- 안드로이드 공식 사이트 설명
https://developer.android.com/reference/android/text/SpannableStringBuilder.html
'안드로이드' 카테고리의 다른 글
[Android, Retrofit, RxJava2] RxJava2 을 사용한 Retrofit 통신 (0) | 2018.05.08 |
---|---|
[Android, ConstraintSet] ConstraintSet 을 통한 애니메이션 (4) | 2018.05.03 |
[Android, EventBus] 이벤트 버스 사용법 (2) | 2018.04.18 |
[Android, BroadcastReceiver] BroadcastReceiver 사용법 (0) | 2018.04.14 |
[Android] LocalBroadcastManager 사용법 (2) | 2018.04.14 |