android – 如何将自定义字体设置为sherlock的上下文操作栏?

前端之家收集整理的这篇文章主要介绍了android – 如何将自定义字体设置为sherlock的上下文操作栏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道如何将自定义字体设置为操作栏.我只需要扩展SherlockFragmentActivity并覆盖setTitle,如下所示:

@Override
public void setTitle(CharSequence title) {
    String str = String.valueOf(title);
    str = str.toUpperCase(Locale.getDefault());
    SpannableString s = new SpannableString(str);
    MetricAffectingSpan span = new MetricAffectingSpan() {
        @Override
        public void updateMeasureState(TextPaint p) {
            p.setTypeface(FontManager.INSTANCE.getAppFont());
        }

        @Override
        public void updateDrawState(TextPaint tp) {
            tp.setTypeface(FontManager.INSTANCE.getAppFont());
        }
    };

    s.setSpan(span,s.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    getSupportActionBar().setTitle(s);
}

但是,使用上下文操作栏会使事情变得复杂.该库使用工厂返回上下文操作栏,如下所示:

ActionMode mode = getSherlockActivity().startActionMode(mActionModeCallback);
mode.setTitle("whatever");

我可以覆盖ActionMode,但lib不会返回它.

有任何想法吗?

最佳答案
我觉得有点复杂……

您需要创建一个View,您将TextView作为标题放置,为此TextView设置所需的字体,并使用setCustomView将视图放置为新字体.

我希望它对你有所帮助.

UPDATE

您是否尝试过创建自己的方法,如下所示:

public void setActionModeTitle(CharSequence title) {
    String str = String.valueOf(title);
    str = str.toUpperCase(Locale.getDefault());
    SpannableString s = new SpannableString(str);
    MetricAffectingSpan span = new MetricAffectingSpan() {
        @Override
        public void updateMeasureState(TextPaint p) {
            p.setTypeface(FontManager.INSTANCE.getAppFont());
        }

        @Override
        public void updateDrawState(TextPaint tp) {
            tp.setTypeface(FontManager.INSTANCE.getAppFont());
        }
    };

    s.setSpan(span,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    actionMode.setTitle(s);
}

猜你在找的Android相关文章