Android TextView 는 SpannableString 을 사용 하여 복합 텍스트 를 설정 하 는 방법 에 대해 자세히 설명 합 니 다.
9353 단어 AndroidTextViewSpannableString
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 레이아웃 레이아웃 기법 요약본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.