操作栏标题字体在 android 中未更改

Actionbar title font not changing in android

我想将自定义字体更改为我的操作栏标题,已经通过了几个可接受的答案,但没有成功,我已尝试如下,但我的自定义字体不适用于我的操作栏标题,请帮忙我摆脱这个,我的代码如下:

java

Typeface font = Typeface.createFromAsset(getActivity().getAssets(),
                "neuropolx.ttf");
        SpannableString s = new SpannableString(
                "                     KOLAY RANDEVU");
        s.setSpan(new CustomTypefaceSpan("", font), 0, 4,
                Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        getActivity().getActionBar().setTitle(s);

不完全支持更改操作栏标题字体,但您可以为操作栏使用自定义视图。使用自定义视图并禁用原生标题。它将显示在图标和操作项之间。您可以从单个 activity 继承所有活动,它在 onCreate 中具有此代码:

this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);

LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.customTitleView, null);

//you can customise anything about the text here.
//Using a custom TextView with a custom font in layout xml so all you need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());

//assign the view to the actionbar
this.getActionBar().setCustomView(v);

您的布局 xml(上面代码中的 R.layout.customTitleView)如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >

<com.your.package.CustomTextView
        android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:textSize="20dp"
            android:maxLines="1"
            android:ellipsize="end"
            android:text="" />
</LinearLayout>

您可以制作自己的自定义操作栏,然后更改标题字体。您可以将字体文件放在资产文件夹中并从中访问。像这样尝试:

tf= Typeface.createFromAsset(getAssets(), "FontType.TTF");

 actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#9B66AB")));

    LayoutInflater inflater = LayoutInflater.from(c);
    @SuppressLint("InflateParams")
    View v = inflater.inflate(R.layout.titleview_2, null);

    TextView actionbar_title = (TextView)v.findViewById(R.id.actionbar_title);
    actionbar_title.setTypeface(tf);

    actionBar.setCustomView(v);

它的 xml 文件将是这样的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/actionBar"
android:paddingTop="7dp"
android:orientation="horizontal"
android:background="#9B66AB">

<TextView
    android:id="@+id/actionbar_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal|center_vertical"
    android:gravity="center_horizontal|center_vertical"
    android:padding="8dp"
    android:text="@string/appTitle"
    android:textSize="20sp"
    android:textColor="#FFFFFF"
    android:layout_centerVertical="true" />
</RelativeLayout>

希望对您有所帮助...

使用

getActivity().getActionBar().setCustomView(myTextView);

在该视图中,您可以使用 TextView,您可以为其设置您选择的字体

TextView myTextView = new TextView(context);        
      myTextView.setTypeface(font);

您可以使用此代码解决此问题

this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);