Android Spannable 적용
거두절미하고 안드로이드에서 Spannable을 사용한 예제 코드다.
본 내용은 지금 보고 있는 도서(깡샘의 안드로이드 프로그래밍)에서 보고 옮겨 두는 것이다. 실무에서 바로 바로 필요할 때 검색을 해서 사용하기도 하지만 유용하게 사용할 수 있는 코드나 사용법을 정리해 두면 좋다.
String data = "복수초 \n img \n 이른봄 설산에서 만나는 복수초는 모든 야생화 찍사들의 로망이 아닐까 싶다.";
이 문자열 중 "img" 라는 단어 위치에 이미지를 출력한다고 가정.
//Spannable을 포함하는 문자열
SpannableStringBuilder builder = new SpannableStringBuilder(data);
//img 문자열 시작 위치
int start = data.indexOf("img");
if (start >- 1) {
//img 문자열의 끝 위치
int end = start + "img".length();
//이미지 획득
Drawable dr = ResourceCompat.getDrawable(getResources(), R.drawable.img1, null);
//이미지의 화면 출력 정보 설정
dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());
//ImageSpan준비
ImageSpan span = new ImageSpan(dr);
//SpannableStringBuilder에 ImageSpan적용
builder.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
SpannableStringBuilder의 마지막 설정 값 종류와 의미
span이 적용된 좌우측에 문자열이 추가될 때, 어떤 span값을 적용할 건지에 대한 설정이다.
- SPAN_EXCLUSIVE_EXCLUSIVE: 왼쪽 제거, 오른쪽 제거
- SPAN_EXCLUSIVE_INCLUSIVE: 왼쪽 제거, 오른쪽 포함
- SPAN_INCLUSIVE_EXCLUSIVE: 왼쪽 포함, 오른쪽 제거
- SPAN_INCLUSIVE_INCLUSIVE : 왼쪽 포함, 오른쪽 포함
'프로그래밍 > Android' 카테고리의 다른 글
DisplayMetrics 객체의 스마트폰의 크기 정보 구하기 (0) | 2018.10.23 |
---|---|
AttributeSet 객체의 속성 리스트 출력 (0) | 2018.10.23 |
Android의 setTag()와 getTag() (0) | 2018.10.22 |
Adapter 와 AdapterView (0) | 2018.10.22 |
안드로이드 타이머 만들기 (TimerTask & Timer & Calendar & Date) (0) | 2018.10.18 |