3

私はこの文字列を持っています:

    String[] text = {"Address 1: Street nr.45 ",
         "Address 2: Street nr.67",
         "Address 3: Street nr. 56 \n Phone number: 000000000"};

後で次のように使用されます。

        ((TextView)findViewById(R.id.adresa)).setText(text[newSelectedAddress]);

スピナーからアイテムを選択するとき。

文字列内のテキストに書式を追加するにはどうすればよいですか?? 住所を太字、Street nr. にしたいです。斜体付き

4

3 に答える 3

3

sを使用する必要がありますSpannable。それらを作成するのは少し冗長で複雑に思えますが、ロケット サイエンスではありません。例:

String source = "This is example text";
SpannedString out = new SpannedString(source);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
StyleSpan boldSpan2 = new StyleSpan(Typeface.BOLD);
out.setSpan(boldSpan, 1, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
out.setSpan(boldSpan2, 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

結果:これはサンプルテキストです

次にsetText、通常の String の代わりに、この Spannable を使用します。

于 2013-02-10T12:42:42.373 に答える
1

親愛なる友よ、このようにしてください:

String[] text = {"Address 1: Street nr.45 ",
             "Address 2: Street nr.67",
             "Address 3: Street nr. 56 \n Phone number: 000000000"};
    String tempString = text[newSelectedAddress];
    CharSequence charSeq= new SpannedString(tempString);
    Spannable spannable = (Spannable) charSeq;
    StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
    StyleSpan boldSpan2 = new StyleSpan(Typeface.ITALIC);
    spannable.setSpan(boldSpan, 0, "Address".length()-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(boldSpan2, tempString.indexOf("Street"), tempString.indexOf("Street")-1 +"Street".length()-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    ((TextView)findViewById(R.id.adresa)).setText(spannable);

ありがとう

于 2013-02-10T13:18:43.180 に答える
0

文字列が html の太字と斜体の書式を認識できるようにするちょっとしたハックがあります。次のようなものをstrings.xmlに追加します。

<string name="address"><![CDATA[<b>Address %1$s</b>: <i>Street nr. %2$s </i>]]></string>

それで:

Resources res = getResources();
formattedString = res.getString(R.string.address, "1", "45");
// equivalent to String.format(res.getString(R.string.address), "1", "45")
Spannable s = Html.from Html(formattedString);
textView.setText(s);
于 2013-07-18T22:02:09.127 に答える