如何(如果可能的话)我可以在我的资产文件夹中使用字体在ActionBar标题文本中设置自定义字体(仅限 - 而不是标签文本)?我不想使用android:logo选项.
我想将操作栏标题,标签和菜单项的字体更改为Roboto.
我想弄清楚这是否可以通过样式完成?因为我无法为这些创建自定义视图,这是分配custm字体的最佳方式.
我已经通过以下链接
我正在尝试在ActionBar标签的标题上设置自定义字体.
我看到更多的开发者,要求以适当的方法等做这个的(例如,如何自定义操作栏标签的字体和如何(如果可能的话),我可以设置选项卡上的文字动作条自定义字体,在我的资产字体文件夹?)但没有答案.
到目前为止,我遵循了两种方法:
1)第一个受到这个SO问题的启发,包括为每个标签膨胀自定义布局:
LayoutInflater inflater = LayoutInflater.from(this);
View customView = inflater.inflate(R.layout.tab_title, null); // a custom layout for the tab title, basically contains a textview...
TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title);
titleTV.setText(mSectionsPagerAdapter.getPageTitle(i));
titleTV.setGravity(Gravity.CENTER_VERTICAL);
titleTV.setTypeface(((MyApp) getApplicationContext()).getCustomTypeface());
// ...Here I could also add any other styling I wanted to...
actionBar.getTabAt(i).setCustomView(customView);
Run Code Online (Sandbox Code Playgroud)
这看起来不是一个非常好的方法,因为如果选项卡+操作不适合横向模式下的ActionBar,则选项卡标题将显示在溢出列表(Spinner/Drop-down)中,但所选值显示为空.当您单击此列表的项目时,所有这些视图都会消失.当例如用户扩展搜索动作视图时导致android将标签显示为下拉列表时,这尤其令人讨厌.
2)我尝试了另一种方法,如本文所示,涉及使用SpannableString但字体不会更改为我的自定义字体.
SpannableString s = new SpannableString(mSectionsPagerAdapter.getPageTitle(i));
s.setSpan(new TypefaceSpan(this, "FontName.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
actionBar.addTab(actionBar.newTab().setText(s).setTabListener(this));
Run Code Online (Sandbox Code Playgroud)
Class TypefaceSpan可以在这里看到. …