如何更改android中同一个单词的特定字母的大小

时间:2014-09-16 12:54:05

标签: android fonts subscript

我从json文件中恢复化学式,并以良好的方式编写它们(下标中有数字),我使用这种方法:

String s = item.get(NAME);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == '2' || s.charAt(i) == '3' || s.charAt(i) == '4'
        || s.charAt(i) == '5' || s.charAt(i) == '6') {
    sb.append("<sub>").append(s.charAt(i)).append("</sub>");
    } else {
    sb.append(s.charAt(i));
    }
}

name.setText(Html.fromHtml(sb.toString()));

它工作正常,但下标字母的字体大小与其他字母的字体大小相同。而且我希望它更小。 那么有没有办法改变单词中特定字母的大小?

感谢

3 个答案:

答案 0 :(得分:3)

您可以使用AbsoluteSizeSpan执行此操作。 E.g:

Spannable span = new SpannableString(text);
span.setSpan(new AbsoluteSizeSpan(14, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(span, TextView.BufferType.SPANNABLE);

startend定义要更改的字符范围。

答案 1 :(得分:1)

您可以使用<font size="number"><font>,其中number表示您想要的文字大小。代码将以字符串形式工作,我已经尝试过了。

答案 2 :(得分:0)

根据 android.text.Html (在GrepCode上),您可以将<small>用于较小的文字,因为<font>仅支持颜色和面部属性。

例如 H 2 O

String s = "<b>H</b><small><sub>2</sub></small><b>O</b>";