【问题标题】:how to avoid SpannableString to span digits如何避免 SpannableString 跨越数字
【发布时间】:2017-12-29 00:09:03
【问题描述】:

我正在尝试使用 Spannable String 跨越字符串而不跨越数字。

String s = "asd21da";

我想避免对数字进行任何更改,而只是跨越字符。 有可能吗?

我的代码:

@SuppressLint("ParcelCreator")
class TypeFace extends TypefaceSpan {
    Typeface typeface;

    public TypeFace(String family, Typeface typeface) {
        super(family);
        this.typeface = typeface;
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setTypeface(typeface);
    }

    @Override
    public void updateMeasureState(TextPaint ds) {
        ds.setTypeface(typeface);
    }
}


    public SpannableString spannableString(String s) {
    SpannableString span = new SpannableString(s);
    span.setSpan(new TypeFace("", Typeface.createFromAsset(context.getAssets(),
            "fonts/font.ttf")), 0, span.length(), span.SPAN_EXCLUSIVE_EXCLUSIVE);

    return span;
     }

我使用它来更改字符串的字体,但我试图避免更改数字字体。

【问题讨论】:

    标签: java android spannablestring


    【解决方案1】:

    一种方法是,如果不是数字,则为每个字符设置跨度:

    SpannableString span = new SpannableString(s);
    for (int i = 0; i < span.length(); i++) {
        if (Character.isDigit(span.charAt(i)))
             continue;
    
        span.setSpan(new TypeFace("", Typeface.createFromAsset(context.getAssets(),
            "fonts/font.ttf")), i, i+1, span.SPAN_INCLUSIVE_INCLUSIVE);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 2019-06-09
      • 2014-02-26
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2011-05-15
      • 2023-02-10
      相关资源
      最近更新 更多