为了账号安全,请及时绑定邮箱和手机立即绑定

如何在ActionBar标题中设置自定义字体?

如何在ActionBar标题中设置自定义字体?

侃侃无极 2019-07-03 11:31:03
如何在ActionBar标题中设置自定义字体?如何(如果可能)在ActionBar标题文本(仅-而不是选项卡文本)中设置自定义字体,并在“我的资产”文件夹中设置字体?我不想使用Android:LOGO选项。
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

您可以使用自定义来完成此操作。TypefaceSpan班级,等级。它比customView上面提到的方法,因为当使用其他ActionBar元素(如展开操作视图)时,它不会中断。

这样一个类的使用如下所示:

SpannableString s = new SpannableString("My Title");s.setSpan(new TypefaceSpan(this, "MyTypeface.otf"), 0, s.length(),
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        // Update the action bar title with the TypefaceSpan instanceActionBar actionBar = getActionBar();actionBar.setTitle(s);

风俗TypefaceSpan类中传递活动上下文和字体名称。assets/fonts目录。它加载文件并缓存一个新的Typeface记忆中的例子。全面实施TypefaceSpan非常简单:

/**
 * Style a {@link Spannable} with a custom {@link Typeface}.
 * 
 * @author Tristan Waddington
 */public class TypefaceSpan extends MetricAffectingSpan {
      /** An <code>LruCache</code> for previously loaded typefaces. */
    private static LruCache<String, Typeface> sTypefaceCache =
            new LruCache<String, Typeface>(12);

    private Typeface mTypeface;

    /**
     * Load the {@link Typeface} and apply to a {@link Spannable}.
     */
    public TypefaceSpan(Context context, String typefaceName) {
        mTypeface = sTypefaceCache.get(typefaceName);

        if (mTypeface == null) {
            mTypeface = Typeface.createFromAsset(context.getApplicationContext()
                    .getAssets(), String.format("fonts/%s", typefaceName));

            // Cache the loaded Typeface
            sTypefaceCache.put(typefaceName, mTypeface);
        }
    }

    @Override
    public void updateMeasureState(TextPaint p) {
        p.setTypeface(mTypeface);

        // Note: This flag is required for proper typeface rendering
        p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    }

    @Override
    public void updateDrawState(TextPaint tp) {
        tp.setTypeface(mTypeface);

        // Note: This flag is required for proper typeface rendering
        tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    }}

只需将上面的类复制到项目中,并在活动的onCreate方法,如上面所示。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 604 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信