ゴージャスな旋削のTextViewを達成SpannableStringBuilder

序文

したいTextViewテキストは、その後、いくつかの強調表示されたテキストを追加し、ジャンプをタップして、最初に考えたのはされてTextViewスプライスしますが、いくつかの問い合わせが見つかった後に新しい行後の表示を検討することは、あまり適していないSpannableStringBuilderだけでなく、希望を達成するために、そのクラスを効果は、また、我々はレンダリングを見てください正確にどのように、魔法より魔法のことができます。

レンダリング

各行はちょうどされTextView、テキストをハイライト表示することができないだけで、や写真を挿入することができる、とあるイベント、一連の一部にクリックしSpannableStringBuilderた結果、詳細に見てみましょう達成するためにSpannableStringBuilder、この驚くべきクラスおよびその使用法を。

簡単な紹介

Googleの公式の説明は次のとおりです。

これは、コンテンツとマークアップの両方変更することができ、テキストのためのクラスです。

翻訳後です:これは、コンテンツの種類であるとマークアップは、テキストを変更することができます。

一言で言えばです:私たちはできるTextView表示Stringするので、ハイライト表示の目的を達成するために、色、サイズ、取り消し線、イタリック、あるいは絵が、またクリックしながら、個々のスタイルを追加することができますなど、様々なスタイルを追加別のフィードバックを実現クリックします。

SpannableStringBuilderそこ似たクラスですSpannableString違いに似て、StringBuilderStringであることをSpannableStringBuilderあなたが使用できるappendメソッドスプライシングは、およびSpannableStringでない、する場合、着信文字列に初期化する必要があります。

メソッドの詳細

指定されたテキストオブジェクトの指定した範囲で標識されたメソッドのCT何、int型開始、int型エンド、int型のフラグ) `、。

パラメータ:

  1. :どのようなStringスパンの異なる、すなわち異なるスタイル備える利用可能なクラス:
  • BackgroundColorSpan :テキストの背景色
  • ForegroundColorSpan :テキストの色
  • MaskFilterSpan:そのようなぼかし(AS変更の効果BlurMaskFilter)、リリーフ
  • RasterizerSpan :ラスター効果
  • StrikethroughSpan :取り消し線
  • SuggestionSpan :プレースホルダの同等
  • UnderlineSpan :下線
  • AbsoluteSizeSpan :テキスト(実寸)
  • DynamicDrawableSpan :ベースラインまたは下部に基づいて設定した画像、テキストの配置。
  • ImageSpan :写真
  • RelativeSizeSpan :相対サイズ(テキストフォント)
  • ScaleXSpan :x軸のスケーリングに基づいて、
  • StyleSpan :フォントスタイル:太字、斜体など
  • SubscriptSpan :添字(数式が使用されます)
  • SuperscriptSpan :スーパースクリプト(数式が使用されます)
  • TextAppearanceSpan :テキストの外観(フォント、サイズ、スタイルと色を含みます)
  • TypefaceSpan :テキストフォント
  • URLSpan :テキストのハイパーリンク
  • ClickableSpan :イベントをクリックします
  1. 開始:識別String開始位置スパンのスタイル。

  2. エンド:特定Stringのエンド位置スパンのスタイルを。

  3. フラグ:開閉ゾーンとして、動作を制御するために使用されるが、それは通常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の開発記録
、表示やスターするためにクリックしてください、私はこのプロジェクトに他の有用な知識や例を追加していきます。

あなたが同意しているためようこそ親指アップ/コメントは、/励ましは、私の文章の最大の力です!

国民の関心番号へようこそ:より興味深い技術、ツール、ゴシップ、リソースを参照してくださいすることが数回鳴ります。
いいえ公共.PNGありません

リリース6元記事 ウォンの賞賛2 ビュー793

おすすめ

転載: blog.csdn.net/nianlun1/article/details/103963349