Android 在操作栏上使用自定义字体

Android 在操作栏上使用自定义字体,android,Android,我正在尝试更改操作栏选项卡上的字体,但无法使其正常工作。我已经尝试了一些方法,这一个看起来是最好的选择。不幸的是,这没有任何作用,字体保持不变。我也知道字体是可以的,因为我在代码的其他部分使用它。这就是我得到的: actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); SpannableString s = new SpannableString("My Tab

我正在尝试更改操作栏选项卡上的字体,但无法使其正常工作。我已经尝试了一些方法,这一个看起来是最好的选择。不幸的是,这没有任何作用,字体保持不变。我也知道字体是可以的,因为我在代码的其他部分使用它。这就是我得到的:

 actionBar = getActionBar();
 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    SpannableString s = new SpannableString("My Tab");
    Typeface tf = Typeface.createFromAsset(getAssets(), "my_font.ttf");
    s.setSpan(tf, 0, s.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    ActionBar.Tab myTab = actionBar.newTab();
    myTab.setText(s);
    myTab.setTabListener(this);

    actionBar.addTab(myTab);
有人知道怎么做吗


提前感谢

您需要按程序进行吗?否则,您可能会使用一个主题,但我注意到,根据构建目标等不同,它的工作方式也不同。下面是一个示例:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:actionBarStyle">@style/WorkoutLogActionBar</item>
    <item name="colorPrimary">#ffffa220</item>
</style>

<style name="WorkoutLogActionBar"
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:titleTextStyle">@style/WorkoutLogActionBarTitleText</item>
    <item name="android:icon">@android:color/transparent</item>
</style>

<style name="WorkoutLogActionBarTitleText">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textSize">@dimen/title_text_size</item>
    <item name="android:fontFamily">"sans-serif-light"</item>
</style>

@样式/训练日志操作栏
#ffffa220
@样式/工作日志操作BartitletText
@android:彩色/透明
@android:彩色/白色
@尺寸/标题\文字\尺寸
“无衬线灯”
这会改变我的actionbar标题中的字体,但似乎有:

<item name="android:actionBarTabTextStyle"></item>

希望这在您的构建目标版本中起作用,并对您有所帮助


致以最良好的祝愿

您可以通过这样定义新的选项卡文本样式来自定义选项卡的文本样式

<style name="TabTextStyle" parent="@style/Widget.AppCompat.ActionBar.TabText">
        <item name="android:textColor">@android:color/holo_blue_bright</item>
        <item name="android:textSize">14sp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:fontFamily">sans-serif-light</item>
    </style>
<style name="AppTheme" parent="AppBaseTheme">
        <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="actionBarTabTextStyle">@style/TabTextStyle</item>
    </style>

@android:color/holo_blue_bright
14便士
大胆的
无衬线灯
现在将tabTextStyle设置为这样

<style name="TabTextStyle" parent="@style/Widget.AppCompat.ActionBar.TabText">
        <item name="android:textColor">@android:color/holo_blue_bright</item>
        <item name="android:textSize">14sp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:fontFamily">sans-serif-light</item>
    </style>
<style name="AppTheme" parent="AppBaseTheme">
        <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="actionBarTabTextStyle">@style/TabTextStyle</item>
    </style>

@样式/选项卡文本样式
@样式/选项卡文本样式

这是在actionbar中使用自定义文本的代码:

        ActionBar act = ((ActionBarActivity) getActivity()).getSupportActionBar();

        LayoutInflater inflator = LayoutInflater.from(getActivity());
        View v = inflator.inflate(R.layout.action_bar_custom, null);

        ((MyCustomTextView) v.findViewById(R.id.title_text)).setText(title);
        act.setCustomView(v);
在这种情况下,我们将一个自定义的
文本视图
放入一个普通的布局中,然后在
操作栏
中将其设置为视图,布局如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ch.nuewsli.widget.TestoTextView 
    android:id="@+id/title_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="@color/WHITE_TEXTCOLOR"
    android:textSize="18sp"
    android:lines="1"
    android:gravity="center_vertical"/>

</LinearLayout>

我想我需要,因为否则你不能使用自定义字体。我明白了,你试过使用自定义视图吗?是的,我可以像那样改变字体,但是我失去了我做的所有其他自定义。你不能这样做,因为我想使用自定义字体。