2013-12-15 3 views
1

Так что я пытаюсь добавить superscipt/индекс к TextView, в основном пытается сделать фракцию отображаться как /. Не уверен, где я ошибаюсь, и я новичок в Android, поэтому любая помощь приветствуется. Благодаря!Android TextView надстрочный

SpannableStringBuilder numSpan = new SpannableStringBuilder(String.valueOf(num)); 
SpannableStringBuilder denSpan = new SpannableStringBuilder(String.valueOf(den)); 

numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
denSpan.setSpan(new SubscriptSpan(), 0, denSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

outputText.setText(numSpan + "/" + denSpan, TextView.BufferType.SPANNABLE);); 

ответ

11

Попробуйте Html.fromHtml вместо этого. Простой и точный:

outputText.setText(Html.fromHtml("<sup>" + num + "</sup>/<sub>" + den + "</sub>")); 

Примечание: Вам может потребоваться дать некоторую высоту текстовому изображению, иначе выход будет обрезан.

В качестве альтернативы, вы можете попробовать это, где число размер меньше:

outputText.setText(Html.fromHtml("<sup><small>" + num + "</small></sup>/<sub><small>" + den + "</small></sub>")); 
+0

спасибо! Это сделал трюк! – user3104877

+1

Есть ли способ изменить размер шрифта (в количестве) текста надстрочного текста? – CoDe

3

Вы можете использовать RelativeSizeSpan

numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
numSpan.setSpan(new RelativeSizeSpan(0.5f), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

или AbsoluteSizeSpan

numSpan.setSpan(new SuperscriptSpan(), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
numSpan.setSpan(new AbsoluteSizeSpan(28), 0, numSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);