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)!

Работает как очарование! :)

Смежные вопросы