android – 如何使用TextAppearanceSpan

前端之家收集整理的这篇文章主要介绍了android – 如何使用TextAppearanceSpan前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我可以制作较小的最后2个数字,但我希望它们显示如下图所示的顶部.

  1. TextView TV = (TextView)findViewById(R.id.txt);
  2. Spannable WordtoSpan = new SpannableString("13.500,27");
  3. WordtoSpan.setSpan( new TextAppearanceSpan(null,12,null,null),WordtoSpan.length()-2,WordtoSpan.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. TV.setText(WordtoSpan);

谢谢塔哈@H_403_10@

最佳答案@H_403_10@
编辑:

你可以使用SuperscriptSpan()

  1. Spannable WordtoSpan = new SpannableString("13.500,27");
  2. WordtoSpan.setSpan( new TextAppearanceSpan(null,17,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  3. WordtoSpan.setSpan( new SuperscriptSpan(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

增加字体大小以查看效果

试试这个
我没有找到任何其他方法,但将上标文本附加到原始spannalbe字符串

应用跨越SpannableStringBuilder所需的任何内容

  1. SpannableStringBuilder builder=new SpannableStringBuilder("13.500,");
  2. builder.append(Html.fromHtml("X

编辑2

如果您创建如下所示的自定义范围,则绝对将supertext与top对齐.但是如果你使用默认的SuperscriptSpan,它就无法使文本成为顶级.

  1. public class SuperscriptSpan2 extends MetricAffectingSpan implements
  2. ParcelableSpan {
  3. public SuperscriptSpan2() {
  4. }
  5. public int getSpanTypeId() {
  6. return TextUtils.CAP_MODE_CHARACTERS;
  7. }
  8. public int describeContents() {
  9. return 0;
  10. }
  11. public void writeToParcel(Parcel dest,int flags) {
  12. }
  13. @Override
  14. public void updateDrawState(TextPaint tp) {
  15. tp.baselineShift += (int) (tp.ascent() / 1.25);
  16. }
  17. @Override
  18. public void updateMeasureState(TextPaint tp) {
  19. tp.baselineShift += (int) (tp.ascent() / 1.25);
  20. }
  21. }
@H_403_10@

猜你在找的Android相关文章