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

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

如何(如果可能)在ActionBar标题文本(仅-而不是选项卡文本)中设置自定义字体,并在“我的资产”文件夹中设置字体?我不想使用Android:LOGO选项。



侃侃无极
浏览 605回答 3
3回答

慕侠2389804

您可以使用自定义来完成此操作。TypefaceSpan班级,等级。它比customView上面提到的方法,因为当使用其他ActionBar元素(如展开操作视图)时,它不会中断。这样一个类的使用如下所示:SpannableString&nbsp;s&nbsp;=&nbsp;new&nbsp;SpannableString("My&nbsp;Title");s.setSpan(new&nbsp;TypefaceSpan(this,&nbsp;"MyTypeface.otf"),&nbsp;0,&nbsp;s.length(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Update&nbsp;the&nbsp;action&nbsp;bar&nbsp;title&nbsp;with&nbsp;the&nbsp;TypefaceSpan&nbsp;instanceActionBar&nbsp;actionBar&nbsp;=&nbsp;getActionBar();actionBar.setTitle(s);风俗TypefaceSpan类中传递活动上下文和字体名称。assets/fonts目录。它加载文件并缓存一个新的Typeface记忆中的例子。全面实施TypefaceSpan非常简单:/** &nbsp;*&nbsp;Style&nbsp;a&nbsp;{@link&nbsp;Spannable}&nbsp;with&nbsp;a&nbsp;custom&nbsp;{@link&nbsp;Typeface}. &nbsp;*&nbsp; &nbsp;*&nbsp;@author&nbsp;Tristan&nbsp;Waddington &nbsp;*/public&nbsp;class&nbsp;TypefaceSpan&nbsp;extends&nbsp;MetricAffectingSpan&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;An&nbsp;<code>LruCache</code>&nbsp;for&nbsp;previously&nbsp;loaded&nbsp;typefaces.&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;LruCache<String,&nbsp;Typeface>&nbsp;sTypefaceCache&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;LruCache<String,&nbsp;Typeface>(12); &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Typeface&nbsp;mTypeface; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Load&nbsp;the&nbsp;{@link&nbsp;Typeface}&nbsp;and&nbsp;apply&nbsp;to&nbsp;a&nbsp;{@link&nbsp;Spannable}. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;TypefaceSpan(Context&nbsp;context,&nbsp;String&nbsp;typefaceName)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mTypeface&nbsp;=&nbsp;sTypefaceCache.get(typefaceName); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(mTypeface&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mTypeface&nbsp;=&nbsp;Typeface.createFromAsset(context.getApplicationContext() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getAssets(),&nbsp;String.format("fonts/%s",&nbsp;typefaceName)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Cache&nbsp;the&nbsp;loaded&nbsp;Typeface &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sTypefaceCache.put(typefaceName,&nbsp;mTypeface); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;updateMeasureState(TextPaint&nbsp;p)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setTypeface(mTypeface); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Note:&nbsp;This&nbsp;flag&nbsp;is&nbsp;required&nbsp;for&nbsp;proper&nbsp;typeface&nbsp;rendering &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setFlags(p.getFlags()&nbsp;|&nbsp;Paint.SUBPIXEL_TEXT_FLAG); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;updateDrawState(TextPaint&nbsp;tp)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp.setTypeface(mTypeface); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Note:&nbsp;This&nbsp;flag&nbsp;is&nbsp;required&nbsp;for&nbsp;proper&nbsp;typeface&nbsp;rendering &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp.setFlags(tp.getFlags()&nbsp;|&nbsp;Paint.SUBPIXEL_TEXT_FLAG); &nbsp;&nbsp;&nbsp;&nbsp;}}只需将上面的类复制到项目中,并在活动的onCreate方法,如上面所示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android