2015-07-31 44 views

Odpowiedz

9

Wygląda Mam rozwiązanie:

private void makeCollapsingToolbarLayoutLooksGood(CollapsingToolbarLayout collapsingToolbarLayout) { 
    try { 
     final Field field = collapsingToolbarLayout.getClass().getDeclaredField("mCollapsingTextHelper"); 
     field.setAccessible(true); 

     final Object object = field.get(collapsingToolbarLayout); 
     final Field tpf = object.getClass().getDeclaredField("mTextPaint"); 
     tpf.setAccessible(true); 

     ((TextPaint) tpf.get(object)).setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Bold.ttf")); 
     ((TextPaint) tpf.get(object)).setColor(getResources().getColor(R.color.ice)); 
    } catch (Exception ignored) { 
    } 
} 
+18

Odbicie ... Brzydki hack – Lester

42

Można zrobić somthing tak:

mCollapsingToolbarLayout.setTitle(getTitle()); 
mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); 
mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar); 

Odpowiedni styl TextView mogą być: 28sp # 000 bold

<style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">24sp</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textStyle">normal</item> 
</style> 

patrz także here w celach informacyjnych.

+0

To świetnie, dzięki! – Kibi

+0

Zrobiłem to dla mnie, zmieniając kolor tekstu tytułu, ponieważ uważam, że '' Toolbar.setTitleTextColor() '' lub '' app: titleTextColor'' z '' Toolbar'' nie zmienia koloru tytułu paska narzędzi, gdy zawarte w '' CollapsingToolbarLayout'' – patrickjason91

84

Zasadniczo można ustawić TextAppearance w swoim xml.

<android.support.design.widget.AppBarLayout 
     android:id="@+id/appbarlyout_commonview_header" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/appbarlayout_height" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapse_commonview_header" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="72dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title"> 

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" /> 

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

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

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

Z powyższego kodu widziałeś tę część

app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" 

Konkretnie ostatnią część

.Title 

enter image description here

Jeśli pamiętasz, to jest udokumentowane w materiale designu w Sekcja Typhography. Możesz to zmienić w dostępnym wbudowanym stylu TextAppearance.

enter image description here

Drugim krokiem jest użycie Roboto Font który zalecany Google. The TextAppearance nie zawiera tych czcionek, więc musimy dodać je ręcznie, na szczęście istnieje Czcionka Robota Gradle Base, która jest oferowana przez Typer. Przed użyciem czcionki musimy dodać nową zależność w naszym build.gradle.

dependencies { 
    compile 'com.elmargomez.typer:typerlib:1.0.0' 
} 

i ustawić czcionki w naszej CollapsingToolbar

Typeface font = Typer.set(yourContext).getFont(Font.ROBOTO_MEDIUM); 
collapsingToolbar.setExpandedTitleTypeface(font); 
+0

# 1. dzięki za wpis – gianguyen

68

można wykorzystywać nowe metody publiczne, na CollapsingToolbarLayout ustawić czcionki dla zawalił i rozszerzonym tytułem, tak:

final Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/FrutigerLTStd-Light.otf"); 
collapsingToolbar.setCollapsedTitleTypeface(tf); 
collapsingToolbar.setExpandedTitleTypeface(tf); 

Wydaje się, że zostało to dodane w bibliotece wsparcia projektowania 23.1.0 i jest bardzo miłym dodatkiem.

+3

To jest świetne, dzięki! –

+0

Jak zmienić tytuł? Chcę programowo ustawić tytuł na inny tekst. – Equivocal

+0

Prawdopodobnie możesz użyć metody 'setTitle (String)' w instancji 'CollapsingToolbarLayout'. – Thorinside

6
mCollapsingToolbar.setTitle(getTitle()); 
    mCollapsingToolbar.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); 
    mCollapsingToolbar.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar); 

<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">28sp</item> 
    <item name="android:textColor">#000</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">24sp</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textStyle">normal</item> 
</style> 

<style name="ExpandedAppBarPlus1" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">28.5sp</item> 
    <item name="android:textColor">#000</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="CollapsedAppBarPlus1" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">24.5sp</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textStyle">normal</item> 
</style> 

referencyjny tutaj CollapsingToolbarLayout setTitle not work correctly

2

zmienić rozmiar czcionki lub rodzicem.

<style name="expandedappbar" parent="@android:style/TextAppearance.Medium"> //Change Medium to Small 
    <item name="android:textSize">28sp</item> <!--Or Change the font size --> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="collapsedappbar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">18sp</item> 
    <item name="android:textColor">@color/white</item> 
</style> 
0

Code jest tutaj

<android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsingToolbarLayout" 
      android:layout_width="match_parent" 
      app:expandedTitleTextAppearance="@style/Toolbar.TitleText" 
      app:collapsedTitleTextAppearance="@style/Toolbar.TitleText" 
      android:layout_height="match_parent" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

Dodaj te linie kodu w CollapsingToolbarLayout układ

app:expandedTitleTextAppearance="@style/Toolbar.TitleText" 
app:collapsedTitleTextAppearance="@style/Toolbar.TitleText" 

a kod, który znajduje się poniżej, w style.xml

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> 
    <item name="android:textSize">16sp</item> 
</style>