Android x 无法更改折叠工具栏字体系列

Android x collapsing toolbar font family cannot be change

我正在尝试更改可折叠工具栏字体。我的代码如下

<com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appbarlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <com.google.android.material.appbar.CollapsingToolbarLayout
        android:id="@+id/id_collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:contentScrim="@color/colorPrimary"
        app:layout_scrollFlags="scroll|snap|enterAlways"
        app:title="App Title">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:scaleType="centerCrop"
            android:src="@drawable/img" />

        <androidx.appcompat.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:theme="@style/TextViewCustomFont"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />

    </com.google.android.material.appbar.CollapsingToolbarLayout>

</com.google.android.material.appbar.AppBarLayout>

<style name="TextViewCustomFont">
    <item name="android:fontFamily">fonts/Montserrat-SemiBold.ttf</item>
</style>

我也在用书法3, 所以,我尝试了 fontPath 而不是 android:fontFamily 然后,我将 android:theme="@style/TextViewCustomFont" 从 Toolbar 移动并选中 CollapsingToolbarLayout 以及所有这些组合。

我无法更改字体样式。

记住这是 androidx,不是旧版本。 Whosebug 中有很多老问题,但 none 中的老问题仍然有效。

CollapsingToolbar你需要调用expandedTitleTextAppearance,collapsedTitleTextAppearance

XML

<com.google.android.material.appbar.CollapsingToolbarLayout
    app:expandedTitleTextAppearance="@style/TextViewCustomFont"
    app:collapsedTitleTextAppearance="@style/TextViewCustomFont"/>

Java

// Java example
CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapsing_toolbar);
collapsingToolbar.setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());
collapsingToolbar.setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());

Kotlin

// Kotlin example
collapsing_toolbar.apply {
    setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
    setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
}

您可以获得更详细的答案

CollapsingToolbarLayout布局中有一个这样的id

 <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/id_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:contentScrim="@color/colorPrimary"
            app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"
            app:title="App Title">

然后,在 onCreate 方法中添加以下行

CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.id_collapsing_toolbar);
final Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Montserrat-SemiBold.ttf");
collapsingToolbar.setCollapsedTitleTypeface(tf);
collapsingToolbar.setExpandedTitleTypeface(tf);