更改android中标题栏的文本外观

时间:2014-12-03 16:36:17

标签: android

我正在尝试使用我的活动更改标题栏的文本外观。深入:我想将fontFamily更改为sans-serif-thin。

这是我尝试在其他各种方法中做的事情:

<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/jammi_red</item>
    <item name="colorPrimaryDark">@color/jammi_red_dark</item>
    <item name="colorAccent">@color/jammi_green</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
</style>

<style name="myTheme.ActionBar.Text" parent="Base.TextAppearance.AppCompat.Title">
    <item name="android:fontFamily">sans-serif-thin</item>
</style>

有谁知道我做错了什么?我正在使用带有API 21的Nexus 5.我的应用程序的最低API是16。

3 个答案:

答案 0 :(得分:1)

这就是我在我的应用中执行此操作的方式。这是我的MainActivity代码的一部分:

Typeface face=Typeface.createFromAsset(getAssets(),"fonts/CustomFont.ttf");
actionBar = getSupportActionBar();
int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
TextView tv = (TextView) findViewById(titleId);
tv.setTypeface(face);

不要忘记将.ttf文件放入资产文件夹。

答案 1 :(得分:0)

尝试以编程方式(将您的Typeface文件放在资产文件夹中),它适用于我:

int titleId = getResources().getIdentifier("action_bar_title", "id","android");

TextView yourTextView = (TextView) findViewById(titleId);

private Typeface tfLogo = Typeface.createFromAsset(getAssets(), "font/Wolf.otf");

yourTextView.setTypeface(tfLogo);

答案 2 :(得分:0)

你说你的最低sdk级别是16,所以不要使用AppCompat包,它是旧版本的后向兼容性。使用其中一个平台主题,例如Theme.Holo.Light.Dark.ActionBar中没有AppCompat作为父级主题。