How to change ActionBar title font when using AppCompat

百般思念 提交于 2019-12-03 05:59:09

问题


I would like to apply custom font to the title of my app which is displayed on the ActionBar. Previously I didn't use any support library and this solution:

int titleId = getResources().getIdentifier("action_bar_title", "id",
                "android");
TextView yourTextView = (TextView) findViewById(titleId);
yourTextView.setTypeface(face);

worked fine for me. But now I am using material design SupportActionBar and this throws NullPointerException. So how to change the ActionBar font when using AppCompat?


回答1:


Assuming you are already successfully using the new toolbar of AppCompat v22+ and that you are importing android.support.v7.widget.Toolbar in your activity.

So on your OnCreate you should already have

toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

at this point you are almost done:

import java.lang.reflect.field;

and add following lines:

TextView yourTextView = null;
try {
    Field f = toolbar.getClass().getDeclaredField("mTitleTextView");
    f.setAccessible(true);
    yourTextView = (TextView) f.get(toolbar);
    yourTextView.setTypeface(face);
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {
}



回答2:


Use Toolbar instead of ActionBar.follow below steps to add toolbar: 1.change your app theme to Theme.AppCompat.Light.NoActionBar 2.Goto project structure from File menu,goto library dependencies,add design library and sync your project. 3.Goto your layout where you want to display ActionBar and write below code:

<android.support.v7.widget.Toolbar
    android:id="@+id/mytoolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/pccolor"
    android:title="Services"
    app:titleTextAppearance="@style/Toolbar.TitleText"
    android:elevation="4dp">
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Toolbar Title"
    android:layout_gravity="center"
    android:id="@+id/toolbar_title" />
</android.support.v7.widget.Toolbar>

4.In the Activity,write as below:

 Toolbar mytoolbar=(Toolbar)findViewById(R.id.mytoolbar);
    setSupportActionBar(mytoolbar);

To customize your title font:

fontPath = "Fonts/Roboto-Light.ttf";
    Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), fontPath);

TextView tv_ins=(TextView)FindViewById(R.id.toolbar_title);
 tv_ins.setText("mytitle");
tv_ins.setTypeface(tf);

Try this out Hopes this helps you,if anything wrong please let me know.




回答3:


prepare Custom Layout ,put text view in action_bar_layout and then call actionbar.setcustomlayout()



来源:https://stackoverflow.com/questions/27757373/how-to-change-actionbar-title-font-when-using-appcompat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!