Android TextView上标

所以我试图将superscipt /下标添加到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);); 

请尝试使用Html.fromHtml 。 简单而精确:

 outputText.setText(Html.fromHtml("" + num + "/" + den + "")); 

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

或者,您可以尝试这样,数字大小较小:

 outputText.setText(Html.fromHtml("" + num + "/" + den + "")); 

您可以使用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);