如何更改CollapsingToolbarLayout字体和大小?

我想改变CollapsingToolbarLayout字体大小和字体。 我怎么能做到这一点?

在这里输入图像说明

基本上你可以在你的xml中设置TextAppearance

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

从上面的代码你看到这个部分

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

具体是最后一部分

 .Title 

在这里输入图像说明

如果您还记得,这在“Typhography”中的“材料devise规格”中进行了说明。 您可以将其更改为可用的内置TextAppearance风格。

在这里输入图像说明

第二步是使用Google推荐的Roboto FontTextAppearance不包括这个字体,所以我们需要手动添加它,幸运的是Typer提供了一个Gradle Base Robot字体。 在使用字体之前,我们需要在build.gradle添加一个新的依赖关系。

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

并将字体设置为我们的CollapsingToolbar

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

您可以使用新的公共方法,在CollapsingToolbarLayout上设置折叠和展开标题的字体,如下所示:

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

这似乎已被添加到devise支持库23.1.0中,并且是一个非常受欢迎的附加。

你可以做这样的事情:

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

对应的textview风格可以是:28sp#000粗体

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

也参见这里供参考。

看起来像我有解决scheme:

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

这里引用CollapsingToolbarLayout setTitle无法正常工作

改变字体大小或父母。

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