Как в TextView записать химическую формулу с верхними и нижними символами?
Как пример - как вывести такую формулу:
Например, с помощью HTML тегов:
<sup>upper</sup>;<sub>lower</sub>;String s = "<sup>upper</sup><sub>lower</sub>";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
mTextView.setText(Html.fromHtml(s, Html.FROM_HTML_MODE_LEGACY));
} else {
mTextView.setText(Html.fromHtml(s));
}
В качестве альтернативного варианта можно использовать SpannableStringBuilder:
SpannableStringBuilder ssb = new SpannableStringBuilder("Cu+6");
ssb.setSpan(new SuperscriptSpan(), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new RelativeSizeSpan(0.75f), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new SubscriptSpan(), 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new RelativeSizeSpan(0.75f), 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(ssb);
UPD: В строке, которая хранится в ресурсах, необходимо заменить < на < (less-than sign), а > на > (greater-than sign):
<string name="str"><sup>upper</sup><sub>lower</sub></string>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей