TextView 内に複数のスタイルを設定することは可能ですか? 質問する

TextView 内に複数のスタイルを設定することは可能ですか? 質問する

TextView 内の異なるテキスト部分に複数のスタイルを設定することは可能ですか?

たとえば、テキストを次のように設定します。

tv.setText(line1 + "\n" + line2 + "\n" + word1 + "\t" + word2 + "\t" + word3);

テキスト要素ごとに異なるスタイルを設定することは可能ですか? 例: line1 を太字、word1 を斜体など。

開発者ガイドのAndroid での一般的なタスクとその実行方法含まれるものテキストの一部を選択、強調表示、またはスタイル設定する:

// Get our EditText object.
EditText vw = (EditText)findViewById(R.id.text);

// Set the EditText's text.
vw.setText("Italic, highlighted, bold.");

// If this were just a TextView, we could do:
// vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE);
// to force it to use Spannable storage so styles can be attached.
// Or we could specify that in the XML.

// Get the EditText's internal text storage
Spannable str = vw.getText();

// Create our span sections, and assign a format to each.
str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

しかし、それはテキスト内の明示的な位置番号を使用します。これを行うよりクリーンな方法はありますか?

ベストアンサー1

どうすればいいか分からない人のために、ここに 1 つの方法を示します (再び Mark に感謝します)。

mBox = new TextView(context);
mBox.setText(Html.fromHtml("<b>" + title + "</b>" +  "<br />" + 
            "<small>" + description + "</small>" + "<br />" + 
            "<small>" + DateAdded + "</small>"));

このメソッドでサポートされているタグの非公式リストについては、このリンクまたはこの質問:Android TextView でサポートされている HTML タグはどれですか?

おすすめ記事