Android 如何在ActionBar中实现精简字体?

Android 如何在ActionBar中实现精简字体?,android,android-actionbar,Android,Android Actionbar,我注意到许多关于在ActionBar中更改字体的问题,但不幸的是,它们中的任何一个都让我感到满意。 我想实现瘦字体一样的收件箱应用程序 我试图改变风格: <style name="AppThemeWithActionBar" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/primary</item> <item name="c

我注意到许多关于在ActionBar中更改字体的问题,但不幸的是,它们中的任何一个都让我感到满意。 我想实现瘦字体一样的收件箱应用程序

我试图改变风格:

<style name="AppThemeWithActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="colorAccent">@color/primary</item>
    <item name="actionBarStyle">@style/AppThemeWithActionBar.ActionBar</item>
</style>

<style name="AppThemeWithActionBar.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="background">@color/primary</item>
    <item name="titleTextStyle">@style/AppThemeWithActionBar.ActionBar.TitleTextStyle</item>
    <item name="android:titleTextStyle">@style/AppThemeWithActionBar.ActionBar.TitleTextStyle</item>
</style>

<style name="AppThemeWithActionBar.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="fontFamily">sans-serif-light</item>
</style>

@颜色/原色
@颜色/原色暗
@颜色/原色
@style/AppThemeWithActionBar.ActionBar
@颜色/原色
@style/AppThemeWithActionBar.ActionBar.TitleTextStyle
@style/AppThemeWithActionBar.ActionBar.TitleTextStyle
无衬线灯

我得到的是没有标题的灰色动作栏。

如果你想要一个小标题,我在我的一个示例中这样做是为了得到一个小标题:

ActionBar actionBar = getActionBar();
actionBar.setTitle(Html.fromHtml("<small>TITLEGOESHERE</small>"));
其中
CustomSizeActionBar
是:

<style name="CustomSizeActionBar" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
    <item name="android:textSize">12sp</item>
</style>

12便士

希望它是您想要的。

尝试在运行时使用
Spannable
设置标题。您应该能够执行以下操作:

SpannableString title = new SpannableString("Your Title");

// Add a span for the sans-serif-light font
title.setSpan(
        new TypefaceSpan("sans-serif-light"), 
        0, 
        title.length(), 
        Spanned.SPAN_INCLUSIVE_INCLUSIVE);

// Add a span for the smaller font size
title.setSpan(
        new AbsoluteSizeSpan(12, true /* dip */),
        0,
        title.length(),
        Spanned.SPAN_INCLUSIVE_INCLUSIVE);

actionBar.setTitle(title);

你想添加另一种字体,还是只想缩小文本的大小?我想让收件箱中的文本看起来一样,不管是什么,更小的文本还是其他字体。你是在使用工具栏还是ActionBar?ActionBar,正如你在样式中所注意到的那样。我不知道为什么,但是,当我使用上述样式时,我看不到标题。你什么也看不到?我只看到ActionBarb上的按钮,但如果从0开始,没有样式,你会得到什么?在一个示例项目上测试它,让我知道它是否是您想要的。如果我没有对操作栏使用样式,一切都可以,但是如果我使用所讨论的代码,我看不到标题是否完美,如何设置较小的文本?可以做同样的事情,但也可以使用
绝对大小span
调用
setSpan()
SpannableString title = new SpannableString("Your Title");

// Add a span for the sans-serif-light font
title.setSpan(
        new TypefaceSpan("sans-serif-light"), 
        0, 
        title.length(), 
        Spanned.SPAN_INCLUSIVE_INCLUSIVE);

// Add a span for the smaller font size
title.setSpan(
        new AbsoluteSizeSpan(12, true /* dip */),
        0,
        title.length(),
        Spanned.SPAN_INCLUSIVE_INCLUSIVE);

actionBar.setTitle(title);