Android TextView 는 SpannableString 을 사용 하여 복합 텍스트 를 설정 하 는 방법 에 대해 자세히 설명 합 니 다.

이 사례 는 안 드 로 이 드 TextView 가 SpannableString 을 사용 하여 복합 텍스트 를 설정 하 는 방법 을 설명 한다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
TextView 는 보통 일반 텍스트 를 표시 하 는 데 사용 되 지만,그 중 일부 텍스트 에 대해 스타일,이벤트 설정 을 해 야 할 때 가 있 습 니 다.Android 시스템 은 SpannableString 클래스 를 통 해 지정 한 텍스트 를 처리 합 니 다.구체 적 으로 다음 과 같은 기능 이 있 습 니 다.
1,배경 ColorSpan 배경 색
2、Clickable Span 텍스트 클릭 가능,이벤트 클릭
3.ForegroundColorSpan 텍스트 색상(전경 색)
4.MaskFilterSpan 수식 효과,예 를 들 어 모호(BlurMaskFilter),부조(EmbossMaskFilter)
5、MetricAffecting Span 부류,일반적으로 사용 하지 않 음
6、Rasterizer Span 회절 격자 효과
7.Strikethrough Span 삭제 선(중간 선)
8.SuggestionSpan 은 자리 차지 문자 에 해당 합 니 다.
9,UnderlineSpan 밑줄
10.AbsoluteSizeSpan 절대 크기(텍스트 글꼴)
11.DynamicDrawableSpan 은 텍스트 기선 이나 아래쪽 을 기반 으로 그림 을 설정 합 니 다.
12,ImageSpan 이미지
13.상대 크기(텍스트 글꼴)
14.Replacement Span 부모 클래스,일반적으로 사용 하지 않 음
15.ScaleXSpan x 축 기반 크기 조정
16.StyleSpan 글꼴 스타일:굵 은 몸,기울 임 꼴 등
17.Subscriptspan 아래 표 시 됨(수학 공식 은 사용)
18.Superscriptspan 에 표시(수학 공식 에 사용)
19.TextAppearance Span 텍스트 외모(글꼴,크기,스타일 과 색상 포함)
20,TypefaceSpan 텍스트 글꼴
21.URLSpan 텍스트 하이퍼링크
상세 한 설명 은 다음 과 같다.
1,배경 ColorSpan 배경 색

SpannableString spanText = new SpannableString("   -- https://www.jb51.net");
spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
2、Clickable Span 텍스트 클릭 가능,이벤트 클릭
보기:Android 는 TextView 를 사용 하여 밑줄 없 는 하이퍼링크 를 실현 하 는 방법
3.ForegroundColorSpan 텍스트 색상(전경 색)

spanText = new SpannableString("   -- https://www.jb51.net");
spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 6, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
4.MaskFilterSpan 수식 효과,예 를 들 어 모호(BlurMaskFilter),부조(EmbossMaskFilter)

spanText = new SpannableString("MaskFilterSpan -- https://www.jb51.net");
int length = spanText.length();
//  (BlurMaskFilter)
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//  (EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:효과 도 를 보면 부조 효과 가 뚜렷 하지 않 습 니 다.글씨 체 를 크게 설정 하면 선명 하 게 볼 수 있다.마스크 필터 의 정 의 를 계승 할 수 있 는 다른 효과 가 필요 합 니 다.
6、Rasterizer Span 회절 격자 효과

spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:잘 모 르 겠 어 요.효과 가 뚜렷 하지 않 아 요.
7.Strikethrough Span 삭제 선(중간 선)

spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
8、SuggestionSpan
자리 표시 자 에 해당 하 며,일반적으로 EditText 입력 상자 에 사 용 됩 니 다.이 텍스트 를 두 번 눌 렀 을 때 알림 상자 가 팝 업 됩 니 다.제안(추천)텍스트 를 선택 하면 선택 한 텍스트 는 이 자리 표시 자 를 바 꿉 니 다.입력 법 에 많이 쓰 인 다.
PS:API 14 가 추가 되 었 습 니 다.예제 가 없습니다.
9,UnderlineSpan 밑줄

spanText = new SpannableString("UnderlineSpan");
spanText.setSpan(new UnderlineSpan(), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
10.AbsoluteSizeSpan 절대 크기(텍스트 글꼴)

spanText = new SpannableString("AbsoluteSizeSpan");
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:글꼴 크기 를 크게 설정 하면 효과 가 단단 합 니 다.
11.DynamicDrawableSpan 은 텍스트 기선 이나 아래쪽 을 기반 으로 그림 을 설정 합 니 다.

DynamicDrawableSpan drawableSpan =
 new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {
 @Override
 public Drawable getDrawable() {
  Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
  d.setBounds(0, 0, 50, 50);
  return d;
 }
};
DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(
DynamicDrawableSpan.ALIGN_BOTTOM) {
 @Override
 public Drawable getDrawable() {
   Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
   d.setBounds(0, 0, 50, 50);
    return d;
   }
  };
spanText.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spanText.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:왼쪽 그림 은 기선 정렬 을 바탕 으로 하고 오른쪽 그림 은 아래쪽 정렬 을 바탕 으로 합 니 다.
12,ImageSpan 이미지

spanText = new SpannableString("ImageSpan");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, 50, 50);
spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:Dynamic Drawable Span 과 차이 가 크 지 않 습 니 다.
13.상대 크기(텍스트 글꼴)

spanText = new SpannableString("RelativeSizeSpan");
//  proportion:    
spanText.setSpan(new RelativeSizeSpan(2.5f), 3, 4,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:상대 크기 의 비율 은 현재 텍스트 글꼴 크기 에 기반 합 니 다.
15.ScaleXSpan x 축 기반 크기 조정

spanText = new SpannableString("ScaleXSpan --   ");
//  proportion:    
spanText.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
16.StyleSpan 글꼴 스타일:굵 은 몸,기울 임 꼴 등

spanText = new SpannableString("StyleSpan --   ");
//Typeface.BOLD_ITALIC:  +  
spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 3, 7,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
17.Subscriptspan 아래 표 시 됨(수학 공식 은 사용)

spanText = new SpannableString("SubscriptSpan --   ");
spanText.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
18.Superscriptspan 에 표시(수학 공식 에 사용)

spanText = new SpannableString("SuperscriptSpan --   ");
spanText.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
19.TextAppearance Span 텍스트 외모(글꼴,크기,스타일 과 색상 포함)

spanText = new SpannableString("TextAppearanceSpan --   ");
//     TextAppearance,            
spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),
 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:시스템 은 관련 값 TextAppearance 도 제공 합 니 다.Small, TextAppearance_Large 등.필요 하 다 면 상기 스타일 을 바탕 으로 수정 할 수 있 습 니 다.
20,TypefaceSpan 텍스트 글꼴

spanText = new SpannableString("TypefaceSpan --   ");
//         ,      TypefaceSpan
spanText.setSpan(new TypefaceSpan("monospace"), 3, 10,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText);
PS:사용자 정의 글꼴 설정 에 대해 서 는 다음 에 어떻게 사용 하 는 지 소개 합 니 다.
21.URLSpan 텍스트 하이퍼링크

spanText = new SpannableString("URLSpan --   ");
spanText.setSpan(new URLSpan("https://www.jb51.net"), 10, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("
"); mTVText.append(spanText); // URLSpan mTVText.setMovementMethod(new LinkMovementMethod());
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,Android 개발 입문 및 진급 강좌,안 드 로 이 드 멀티미디어 조작 기법 모음(오디 오,비디오,녹음 등),Android 기본 구성 요소 사용법 요약,Android 보기 기술 요약Android 레이아웃 레이아웃 기법 요약
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기