如何打印带下标或上标的字符串?没有外部库,你能做到吗?我希望它显示在Android中的TextView
。
答案 0 :(得分:142)
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
或
答案 1 :(得分:97)
示例:
equation = (TextView) findViewById(R.id.textView1);
SpannableStringBuilder cs = new SpannableStringBuilder("X3 + X2");
cs.setSpan(new SuperscriptSpan(), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new RelativeSizeSpan(0.75f), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new RelativeSizeSpan(0.75f), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
equation.setText(cs);
答案 2 :(得分:44)
对于所有人来说,如果你想使它变得更小,除了制作超级或下标之外,你只需要添加标签。 EX:
"X <sup><small> 2 </small></sup>"
答案 3 :(得分:10)
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>"));
(或)来自字符串资源文件:
<string name="test_string">
<![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
答案 4 :(得分:9)
如果要从string.xml文件设置上标,请尝试:
字符串资源:
<string name="test_string">X<sup>3</sup></string>
如果您希望上标更小:
<string name="test_string">X<sup><small>3</small></sup></string>
<强>代码:强>
textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));
答案 5 :(得分:9)
有点晚了但是只要工作正常,使用上标作为特殊字符,我在这里使用了空格字符。
<string name="str">H₂</string>
答案 6 :(得分:9)
在代码中只是把这个&#34; \ u00B2&#34;像这样:
textView.setText("X\u00B2");
答案 7 :(得分:7)
现已弃用已接受的答案。所以请仔细阅读这段代码。我是从某个网站得到的。我忘记了这个名字,但无论如何,感谢这段好工作代码。
SpannableString styledString
= new SpannableString("Large\n\n" // index 0 - 5
+ "Bold\n\n" // index 7 - 11
+ "Underlined\n\n" // index 13 - 23
+ "Italic\n\n" // index 25 - 31
+ "Strikethrough\n\n" // index 33 - 46
+ "Colored\n\n" // index 48 - 55
+ "Highlighted\n\n" // index 57 - 68
+ "K Superscript\n\n" // "Superscript" index 72 - 83
+ "K Subscript\n\n" // "Subscript" index 87 - 96
+ "Url\n\n" // index 98 - 101
+ "Clickable\n\n"); // index 103 - 112
// make the text twice as large
styledString.setSpan(new RelativeSizeSpan(2f), 0, 5, 0);
// make text bold
styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, 11, 0);
// underline text
styledString.setSpan(new UnderlineSpan(), 13, 23, 0);
// make text italic
styledString.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0);
styledString.setSpan(new StrikethroughSpan(), 33, 46, 0);
// change text color
styledString.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0);
// highlight text
styledString.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0);
// superscript
styledString.setSpan(new SuperscriptSpan(), 72, 83, 0);
// make the superscript text smaller
styledString.setSpan(new RelativeSizeSpan(0.5f), 72, 83, 0);
// subscript
styledString.setSpan(new SubscriptSpan(), 87, 96, 0);
// make the subscript text smaller
styledString.setSpan(new RelativeSizeSpan(0.5f), 87, 96, 0);
// url
styledString.setSpan(new URLSpan("http://www.google.com"), 98, 101, 0);
// clickable text
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
// We display a Toast. You could do anything you want here.
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
}
};
styledString.setSpan(clickableSpan, 103, 112, 0);
// Give the styled string to a TextView
spantext = (TextView) findViewById(R.id.spantext);
// this step is mandated for the url and clickable styles.
spantext.setMovementMethod(LinkMovementMethod.getInstance());
// make it neat
spantext.setGravity(Gravity.CENTER);
spantext.setBackgroundColor(Color.WHITE);
spantext.setText(styledString);
注意:始终放置spantext的android:textAllCaps="false"
。
答案 8 :(得分:4)
从API 24开始,不推荐使用HTML.fromHTML(String)。他们说要使用这个,而是支持标志作为参数。所以要取消接受的答案:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
如果你想要考虑前24个API的代码:
TextView textView = ((TextView)findViewById(R.id.text));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
} else {
textView.setText(Html.fromHtml("X<sup>2</sup>"));
}
这个答案来自: https://stackoverflow.com/a/37905107/4998704
可以在此处找到标志和其他文档: https://developer.android.com/reference/android/text/Html.html
答案 9 :(得分:3)
我发现this文章介绍了如何使用Spannable
或字符串资源文件:<sup>
或<sub>
分别为上标和下标。
答案 10 :(得分:0)
在strings.xml
文件中,您只需使用HTML <sup>3</sup>
标记即可。为我完美工作
示例强>
<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>
答案 11 :(得分:0)
它们被称为Unicode字符,Android TextView
支持它们。从此Wiki复制所需的超级/子脚本:https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
答案 12 :(得分:0)
对于“ a”,请复制并粘贴此“ᵃ”
您可以将任何这些上标和下标直接复制并粘贴到您的Android字符串资源中。
示例:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
结果:商标ᵀᴹ
上标和下标字母
上标大写字母
上标小写 ᵃp p p p
下标小
答案 13 :(得分:0)
根据Gerardo的回答here,我在Int上创建了此扩展名
fun Int.toSuperScript(): String {
return when (this) {
0 -> "\u2070"
1 -> "\u00B9"
2 -> "\u00B2"
3 -> "\u00B3"
4 -> "\u2074"
5 -> "\u2075"
6 -> "\u2076"
7 -> "\u2077"
8 -> "\u2078"
9 -> "\u2079"
else -> ""
}
}
答案 14 :(得分:-1)
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2