Как в TextView записать химическую формулу?

270
09 января 2017, 20:44

Как в TextView записать химическую формулу с верхними и нижними символами?

Как пример - как вывести такую формулу:

Answer 1

Например, с помощью 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: В строке, которая хранится в ресурсах, необходимо заменить < на &lt; (less-than sign), а > на &gt; (greater-than sign):

<string name="str">&lt;sup&gt;upper&lt;/sup&gt;&lt;sub>lower&lt;/sub&gt;</string>
READ ALSO
Табы на чистом CSS

Табы на чистом CSS

Для реализации табов использую :target, но при загрузке страницы нужно чтобы первый блок был видимБлоки будут выводится динамически

439