我正在使用带有一些文本(String)的微调器,我想用下标的数字2写出化学表达式MgCl2。我该怎么做?
我看过一些帖子告诉我们使用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);
答案 0 :(得分:1)
您可以使用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
的所有效果。
答案 1 :(得分:0)
您可以使用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