【问题标题】:Android TextView superscriptAndroid TextView 上标
【发布时间】:2013-12-15 17:02:05
【问题描述】:

所以我试图将上标/下标添加到 TextView,基本上是想让分数显示为 1/2。不知道我哪里出错了,而且我是 Android 新手,所以感谢您的帮助。谢谢!

SpannableStringBuilder numSpan = new SpannableStringBuilder(String.valueOf(num));
SpannableStringBuilder denSpan = new SpannableStringBuilder(String.valueOf(den));

numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
denSpan.setSpan(new SubscriptSpan(), 0, denSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

outputText.setText(numSpan + "/" + denSpan, TextView.BufferType.SPANNABLE););

【问题讨论】:

    标签: java android textview superscript spannable


    【解决方案1】:

    改用Html.fromHtml。简单而精确:

    outputText.setText(Html.fromHtml("<sup>" + num + "</sup>/<sub>" + den + "</sub>"));
    

    注意:您可能需要为 textview 提供一些高度,否则输出将被剪裁。

    或者,你可以试试这个,数字更小:

    outputText.setText(Html.fromHtml("<sup><small>" + num + "</small></sup>/<sub><small>" + den + "</small></sub>"));
    

    【讨论】:

    • 有什么办法可以改变上标文字的字体大小(数量)?
    【解决方案2】:

    你可以使用RelativeSizeSpan

    numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    numSpan.setSpan(new RelativeSizeSpan(0.5f), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    

    或AbsoluteSizeSpan

    numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    numSpan.setSpan(new AbsoluteSizeSpan(28), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 2015-12-31
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      相关资源
      最近更新 更多