字符串数组文本格式

时间:2013-02-10 12:40:12

标签: android arrays string formatting bold

我有这个字符串:

    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]);

从微调器中选择项目时。

如何在字符串内的文本中添加格式?我希望地址与大胆,街道nr。用斜体

3 个答案:

答案 0 :(得分:3)

你必须使用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);

结果:T hi s是e xam 文本

然后setText这个Spannable而不是普通的String。

答案 1 :(得分: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);

由于

答案 2 :(得分:0)

有一些hack允许字符串识别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);