在Android中下标和上标字符串
你怎么能打印一个下标或上标字符串? 你可以做这个没有外部库吗? 我希望这显示在Android中的TextView
。
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
要么
常见的任务和如何在Android中做到这一点
例:
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);
对于所有的人来说,如果你想让它变得更小,除了制作超级或下标,你只需要添加标签。 EX:
"X <sup><small> 2 </small></sup>"
如果你想从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)));
有点迟了,但下面的工作很好,使用上标作为特殊字符,我在这里使用空间字符。
<string name="str">H₂</string>
((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>
我找到了关于如何使用Spannable
或字符串资源文件的文章:分别用于上标和下标的<sup>
或<sub>
。
HTML.fromHTML(String)在API 24中被弃用。他们说使用这个支持标志作为参数的那个。 所以,要接受的答案是:
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
接受的答案现在已被弃用。 所以请通过这段代码。 我从一些网站得到这个。 我忘了这个名字,不过谢谢你这个好工作代码。
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"
。
它们被称为Unicode字符,Android TextView
支持它们。 复制你想从这个维基超级/子脚本: https : //en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
在strings.xml
文件中,您可以使用HTML <sup>3</sup>
标记。 为我完美工作
例
<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>
yourTextView.setText(Html.fromHtml("X<sup>2</sup>")); This will be the result in you yourTextView =
X 2