如何自定义Action Bar字幕Font?

Ely*_*lye 13 android android-appcompat android-actionbar-compat android-toolbar

我已经创建了一个ActionBar(android.support.v7.widget.Toolbar),如下所示.

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myToolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

在我的ActionBar中,除了标题之外,我还有Subtitle.但是我想自定义字幕.在自定义中,我的意思是字体大小,颜色和字体.

我尝试了各种主题和风格,但仍然不成功.

如果有一个简单的完整示例说明如何做到这一点,那将真的有所帮助.谢谢!

Bob*_*der 46

如果您的布局文件中还没有此命名空间属性,请添加它:

的xmlns:应用= "http://schemas.android.com/apk/res-auto"

更新布局文件中的工具栏属性,如下所示:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myToolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleTextAppearance="@style/ToolbarTitleAppearance"
    app:subtitleTextAppearance="@style/ToolbarSubtitleAppearance"
    android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

添加以下样式:

<style name="ToolbarTitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">20dp</item>
    <!-- include other attributes you want to change: textColor, textStyle, etc -->
</style>

<style name="ToolbarSubtitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
    <item name="android:textSize">14dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

对这个答案的评论讨论了单位是否textSize应该是dpsp.当我最初写这个答案时,我查看了Android源文件并看到了它的dp用法.我建议坚持下去.正如FrancescoDonzello在评论中解释的那样,工具栏的大小是固定的,与其他小部件不同,它不会扩展为包含通过更改手机设置而放大的文本.

  • 对于文本大小,您应该使用sp而不是dp (6认同)
  • 惊人的!谢谢!!我几乎确定了不太理想的解决方案,即`getSupportActionBar().setSubtitle(Html.fromHtml("&lt;small&gt;" + title + "&lt;/small&gt;"));` (2认同)
  • @FrancescoDonzello 检查 Android 源代码,他们使用 dp 作为工具栏文本大小。这是有道理的,因为在更改手机设置中的基本字体大小时,工具栏高度不会改变。 (2认同)