3

我设法通过下面的代码来改变AppBar标题的字体在我的“正常”的活动:SetSpan不ScrollingActivity标题工作

setContentView(R.layout.activity_scrolling); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar);   

    SpannableString s = new SpannableString("MyTitle"); 
    s.setSpan(new TypefaceSpan(this, "Britannic_Bold.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    setTitle(s); 

使用自定义类TypefaceSpan:

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); 
} 

}

然而,这并不适用于滚动活动(由Android Studio创建)

滚动活动的标题不会更改其字体,但文本会按预期更改。

我已经尝试了很多,包括为工具栏标题创建样式,但它似乎不工作。

有什么我可能监督?

这里是滚动活动的XML部分:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/app_bar_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

回答

0

所以经过试验和错误的一点点我已经找到了解决方案!

只需获取CollapsedToolbarLayout并调用setCollapsedTitleTypeface(customFont)和setExpandedTitleTypeface(customFont)!

工程就像一个魅力! :)