我有一个字体,我想在android中更改动作栏标题的字体。 有没有办法像这样设置标题字体?
this.setTitle(myTitle.toUpperCase());
this.setTypefaceofTitle(tf);
这不是复制问题,此链接(How to Set a Custom Font in the ActionBar Title?)上的方法无效。 当我尝试它们时,eclipse会给出错误: java.lang.noSuchMethodError
答案 0 :(得分:14)
试试这个,
int actionBarTitle = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
TextView actionBarTitleView = (TextView) getWindow().findViewById(actionBarTitle);
Typeface robotoBoldCondensedItalic = Typeface.createFromAsset(getAssets(), "fonts/Roboto-BoldCondensedItalic.ttf");
if(actionBarTitleView != null){
actionBarTitleView.setTypeface(robotoBoldCondensedItalic);
}
如果它的工具栏意味着尝试如下。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_color”
app:theme="@style/ToolBarTheme" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:layout_gravity="center"
android:id="@+id/title_txt” />
</android.support.v7.widget.Toolbar>
然后只需使用以下注释以编程方式添加任何样式。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
TextView mTitle = (TextView) toolbar.findViewById(R.id.title);
OR
使用样式进行更改。需要一个信息click here。
答案 1 :(得分:2)
我发现了帮助我的headvk this answer。做一些调整我只需要这样做:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
...
TextView myTitle = (TextView) toolbar.getChildAt(0);
myTitle.setTypeface(font);
对我的应用程序进行一些测试我发现标题TextView是工具栏的第一个子项,所以现在我已经拥有它,我可以对其进行更改。
答案 2 :(得分:1)
https://stackoverflow.com/a/8748802/1943671你可以在这个答案中做到。
在链接中将自定义视图设置到操作栏后,只需为TextView指定字体:
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/yourfont.ttf");
TextView tv = (TextView) findViewById(R.id.customTitle);
tv.setTypeface(tf);
答案 3 :(得分:0)
您可以通过在ActionBar.
中创建自定义视图并对该自定义视图进行充气来实现
此自定义视图将包含您将获得引用的TextView
,然后可以设置字体。
答案 4 :(得分:0)
不支持。但您可以为操作栏创建自定义视图。 How to Set a Custom Font in the ActionBar Title?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.activity_main, menu);
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
Typeface tf = Typeface.createFromAsset(getAssets(),
"fonts/architectsdaughter.ttf");
LayoutInflater inflator = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.xml_master_footer, null);
this.getActionBar().setCustomView(v);
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
((TextView) v.findViewById(R.id.title)).setTypeface(tf);
//assign the view to the actionbar
return true;
}
并在你的宣言中
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="16" />