如何更改动作栏标题/副标题的字体?

时间:2015-03-21 13:56:16

标签: android android-actionbar typeface

我想自定义ActionBar标题和副标题的字体。为此,我将所需的TTF文件放在资产文件夹中,并通过说出来加载字体 Typeface font = Typeface.createFromAsset(getAssets(), "ARDESTINE.TTF");
将此字体应用于ButtonTextView等视图很容易,但是 如何将其应用于ActionBar,我找不到任何setter方法?或者我必须使用getActionBar().setCustomView(view)
为了实现这个目标?

2 个答案:

答案 0 :(得分:3)

您可以在所需的字体中创建SpannableString,并将该字符串设置为ActionBar的标题。

String name = "....."; // your string here
SpannableString s = new SpannableString(name);
s.setSpan(new TypefaceSpan(getApplicationContext(),BOLD_FONT_FILENAME, getResources().getColor(R.color.white), getResources().getDimension(R.dimen.size16)), 0, s.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
actionBar.setTitle(s);

答案 1 :(得分:0)

我还找到了上述解决方案的替代方案。把它放在你的CreateOptionsMenu()方法中:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    this.setTitle(R.string.app_name_short);
    getActionBar().setSubtitle(R.string.app_name_full);
    int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
    int subtitleId = getResources().getIdentifier("action_bar_subtitle", "id", "android");
    Typeface font = Typeface.createFromAsset(getAssets(), "ARDESTINE.TTF");
    ((TextView) findViewById(titleId)).setTypeface(font);
    ((TextView) findViewById(subtitleId)).setTypeface(font);
    // getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.checker));
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}