테스트 환경
Android Studio 2.1.2
Target SDK 24 ( Android 7.0 Nougat)
SpannableStringBuilder은 간단히 설명하자면 Text Style을 넣는 기능이라고 생각한다.
주로 setSpan() 사용하여 이 메소드에 대해 설명할 것이다.
what : Text Style을 적용할 span
start : Style을 적용할 텍스트 시작 index
end : Style을 적용할 텍스트 끝 index
flags : 필자는 모르겠다.
- Style 종류
color : 덮을 컬러 색상 설정
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor("#1dafe2")); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); | cs |
ForegroundColorSpan 적용 결과
size : 크기 설정
size : 크기 설정
dip : size를 dip로 설정한 건지 여부
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); AbsoluteSizeSpan span = new AbsoluteSizeSpan(25, true); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); | cs |
AbsoluteSizeSpan 적용 결과
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); UnderlineSpan span = new UnderlineSpan(); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); | cs |
UnderlineSpan 적용 결과
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); StrikethroughSpan span = new StrikethroughSpan(); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); | cs |
StrikethroughSpan 적용 결과
resourceId : 이미지 리소스 id
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); ImageSpan span = new ImageSpan(this, R.mipmap.ic_launcher); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); | cs |
ImageSpan 적용 결과
gapWidth : bullet과 Text간의 간격 설정
gapWidth : bullet과 Text간의 간격 설정
color : bullet 색상 설정
1 2 3 4 5 6 7 8 9 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); // bullet은 start를 0부터 시작해야 적용됨. sb.setSpan(new BulletSpan(20), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); |
BulletSpan 적용 결과
url : 이동 할 url 설정
1 2 3 4 5 6 7 8 9 10 11 12 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); URLSpan span = new URLSpan("http://m.naver.com"); sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); // 이게 없으면 동작하지 않음. tv.setMovementMethod(LinkMovementMethod.getInstance()); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | String text = "SpannableStringBuilder Test"; SpannableStringBuilder sb = new SpannableStringBuilder(text); ClickableSpan span = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(this, "ClickableSpan", Toast.LENGTH_SHORT).show(); } }; sb.setSpan(span, 9, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView tv = (TextView) findViewById(R.id.textview); tv.setText(sb); // 이게 없으면 동작하지 않음. tv.setMovementMethod(LinkMovementMethod.getInstance()); // 클릭 press효과 없앰. tv.setHighlightColor(Color.TRANSPARENT); | cs |
URLSpan, ClickableSpan 적용 결과
URLSpan은 ClickableSpan을 상속받아 만들어졌기 때문에 동작은 같다.
Android Log 표시(Log 짤림 현상 개선) (0) | 2017.12.04 |
---|---|
android 디바이스에 저장된 연락처 가져오기 (0) | 2017.10.17 |
android Status Bar 색상 변경 (0) | 2017.09.05 |
android 단말기내 어플리케이션(앱) 설치 여부 확인 방법 (0) | 2016.12.05 |
android '최근 실행 목록'에서 실행 시 구분 (0) | 2016.12.05 |
댓글 영역