1. ホーム
  2. アンドロイド

[解決済み】ActionBarのタイトルにカスタムフォントを設定する方法は?

2022-04-06 09:02:22

質問

ActionBarのタイトルテキスト(タブテキストではない)に、assetsフォルダにあるフォントでカスタムフォントを設定するには(可能であれば)どうしたらよいでしょうか?android:logoオプションは使いたくありません。

どうすればいいですか?

完全にサポートされていないことには同意しますが、私が行ったことは以下の通りです。アクションバーにはカスタムビューを使用することができます(アイコンとアクションアイテムの間に表示されます)。私はカスタムビューを使用しており、ネイティブのタイトルは無効にしています。私のすべてのアクティビティは、1つのアクティビティを継承しており、onCreateに次のコードがあります。

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

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

//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I 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.titleview)は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="" />
</RelativeLayout>