Как подписать текст на спиннер в Android?
Я использую счетчик с некоторым текстом (String), и я хотел бы написать химическое выражение MgCl2 с номером 2 подписанным. Как мне это сделать?
Я видел некоторые посты, рассказывающие об использовании Html.fromHtml(), но AndroidStudio говорит, что этот метод устарел. Вы можете увидеть мой код ниже.
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
list.add("MgCl2");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_expandable_list_item_1);
spinner1.setAdapter(dataAdapter);
2 ответа
Вы можете сделать это напрямую с SpannableString
,
SpannableString s = new SpannableString("MgCl2");
s.setSpan(new SubscriptSpan(), 5, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Ваш ArrayAdapter
можно напечатать как <CharSequence>
, Любой вниз по течению setText
вызовы могут принимать аргумент CharSequence (вместо String
вы используете сейчас).
Обратите внимание, что SpannableString
неизменен. Для более сложных конструкций, вы можете захотеть SpannableStringBuilder
,
Вероятно, вы должны знать о наборе CharacterStyle
подклассы. Они представляют все эффекты, которые вы можете применить к Spanned
любого конкретного типа.
Ты можешь использовать SpannableStringBuilder
создать текст с нижним индексом. Что-то вроде:
SpannableStringBuilder span = new SpannableStringBuilder("MgCl2");
span.setSpan(new SubscriptSpan(), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Это сделает 2 индексом, однако он сохранит свой размер. Чтобы уменьшить его, добавьте RelativeSizeSpan
а так вот так:
span.setSpan(new RelativeSizeSpan(0.75f), 3, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Вам придется изменить свой ArrayList
типа, хотя, либо CharSequence
или же StringBuilder