序文
したいTextView
テキストは、その後、いくつかの強調表示されたテキストを追加し、ジャンプをタップして、最初に考えたのはされてTextView
スプライスしますが、いくつかの問い合わせが見つかった後に新しい行後の表示を検討することは、あまり適していないSpannableStringBuilder
だけでなく、希望を達成するために、そのクラスを効果は、また、我々はレンダリングを見てください正確にどのように、魔法より魔法のことができます。
各行はちょうどされTextView
、テキストをハイライト表示することができないだけで、や写真を挿入することができる、とあるイベント、一連の一部にクリックしSpannableStringBuilder
た結果、詳細に見てみましょう達成するためにSpannableStringBuilder
、この驚くべきクラスおよびその使用法を。
簡単な紹介
Googleの公式の説明は次のとおりです。
これは、コンテンツとマークアップの両方変更することができ、テキストのためのクラスです。
翻訳後です:これは、コンテンツの種類であるとマークアップは、テキストを変更することができます。
一言で言えばです:私たちはできるTextView
表示String
するので、ハイライト表示の目的を達成するために、色、サイズ、取り消し線、イタリック、あるいは絵が、またクリックしながら、個々のスタイルを追加することができますなど、様々なスタイルを追加別のフィードバックを実現クリックします。
SpannableStringBuilder
そこ似たクラスですSpannableString
違いに似て、StringBuilder
、 String
であることをSpannableStringBuilder
あなたが使用できるappend
メソッドスプライシングは、およびSpannableString
でない、する場合、着信文字列に初期化する必要があります。
メソッドの詳細
指定されたテキストオブジェクトの指定した範囲で標識されたメソッドのCT何、int型開始、int型エンド、int型のフラグ) `、。
パラメータ:
- :どのような
String
スパンの異なる、すなわち異なるスタイル備える利用可能なクラス:
BackgroundColorSpan
:テキストの背景色ForegroundColorSpan
:テキストの色MaskFilterSpan
:そのようなぼかし(AS変更の効果BlurMaskFilter
)、リリーフRasterizerSpan
:ラスター効果StrikethroughSpan
:取り消し線SuggestionSpan
:プレースホルダの同等UnderlineSpan
:下線AbsoluteSizeSpan
:テキスト(実寸)DynamicDrawableSpan
:ベースラインまたは下部に基づいて設定した画像、テキストの配置。ImageSpan
:写真RelativeSizeSpan
:相対サイズ(テキストフォント)ScaleXSpan
:x軸のスケーリングに基づいて、StyleSpan
:フォントスタイル:太字、斜体などSubscriptSpan
:添字(数式が使用されます)SuperscriptSpan
:スーパースクリプト(数式が使用されます)TextAppearanceSpan
:テキストの外観(フォント、サイズ、スタイルと色を含みます)TypefaceSpan
:テキストフォントURLSpan
:テキストのハイパーリンクClickableSpan
:イベントをクリックします
-
開始:識別
String
開始位置スパンのスタイル。 -
エンド:特定
String
のエンド位置スパンのスタイルを。 -
フラグ:開閉ゾーンとして、動作を制御するために使用されるが、それは通常0に設定されているか、定数は、一般的に使用されるで定義されたスパン
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
:DOはフロントとリア含まない;
Spannable.SPAN_EXCLUSIVE_INCLUSIVE
:バックあって、フロントが含まれていません;
Spannable.SPAN_INCLUSIVE_EXCLUSIVE
:;バックを含めない備える前、
Spannable.SPAN_INCLUSIVE_INCLUSIVE
前と後の両方が含ま:。
その他のフラグ引数は、Android開発者向けのドキュメントを参照してくださいするにはここをクリックすることができSpannableStringBuilderを。
使用例
まず、定義して初期化TextView
作成し、制御をSpannableStringBuilder
、表示設定される文字列の内容を渡すSpannableString
ことによって、パラメータの内容をsetText
表示する方法。
(1)フォントの色ForegroundColorSpan
SpannableStringBuilder spanString01 = new SpannableStringBuilder("风急天高猿啸哀");
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.RED);
spanString01.setSpan(foregroundColorSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
mTvAdvanced01.setText(spanString01);
(2)フォント背景色BackgroundColorSpan
SpannableStringBuilder spanString02 = new SpannableStringBuilder("渚清沙白鸟飞回");
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.YELLOW);
spanString02.setSpan(backgroundColorSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvAdvanced02.setText(spanString02);
(3)フォントサイズAbsoluteSizeSpan
SpannableStringBuilder spanString03 = new SpannableStringBuilder("无边落木萧萧下");
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(30);
spanString03.setSpan(absoluteSizeSpan, 4, 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mTvAdvanced03.setText(spanString03);
(4)太字、イタリックStyleSpan
SpannableStringBuilder spanString04 = new SpannableStringBuilder("不尽长江滚滚来");
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC);
spanString04.setSpan(styleSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvAdvanced04.setText(spanString04);
(5)取り消し線StrikethroughSpan
SpannableStringBuilder spanString05 = new SpannableStringBuilder("万里悲秋常作客");
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spanString05.setSpan(strikethroughSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvAdvanced05.setText(spanString05);
(6)下線を付しましたUnderlineSpan
SpannableStringBuilder spanString06 = new SpannableStringBuilder("百年多病独登台");
UnderlineSpan underlineSpan = new UnderlineSpan();
spanString06.setSpan(underlineSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvAdvanced06.setText(spanString06);
(7)写真ImageSpan
SpannableStringBuilder spanString07 = new SpannableStringBuilder("艰难苦恨繁霜鬓");
ImageSpan span = new ImageSpan(this, R.drawable.ic_text);
spanString07.setSpan(span, 4, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvAdvanced07.setText(spanString07);
(8)イベントをクリックしますClickableSpan
SpannableStringBuilder spanString08 = new SpannableStringBuilder("潦倒新停浊酒杯");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
Toast.makeText(AdvancedTextViewActivity.this, "杜甫", Toast.LENGTH_SHORT).show();
}
};
spanString08.setSpan(clickableSpan, 4, 7, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
mTvAdvanced08.setText(spanString08);
mTvAdvanced08.setMovementMethod(LinkMovementMethod.getInstance());
(9)SpannableStringBuilder
の組み合わせ
SpannableStringBuilder spanString09 = new SpannableStringBuilder();
spanString09.append("杜甫 ,字子美,自号少陵野老,后人称为'诗圣'。");
//图片
ImageSpan imageSpan = new ImageSpan(this, R.drawable.ic_author);
spanString09.setSpan(imageSpan, 2, 4, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//点击事件
ClickableSpan cbSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
Toast.makeText(AdvancedTextViewActivity.this, "杜甫", Toast.LENGTH_SHORT).show();
}
};
spanString09.setSpan(cbSpan, 2, 4, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//文字颜色
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.WHITE);
spanString09.setSpan(colorSpan, 10, 14, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//文字背景颜色
BackgroundColorSpan bgColorSpan = new BackgroundColorSpan(Color.BLUE);
spanString09.setSpan(bgColorSpan, 10, 14, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
mTvAdvanced09.setText(spanString09);
mTvAdvanced09.setMovementMethod(LinkMovementMethod.getInstance());
ここでSpannableStringBuilderの導入と使用に、そして私が例にアップロードしたGithubの開発記録
、表示やスターするためにクリックしてください、私はこのプロジェクトに他の有用な知識や例を追加していきます。
あなたが同意しているためようこそ親指アップ/コメントは、/励ましは、私の文章の最大の力です!
国民の関心番号へようこそ:より興味深い技術、ツール、ゴシップ、リソースを参照してくださいすることが数回鳴ります。