Android 8.0(API レベル 26)では、XML 形式のフォントが導入されています。
フォントをリソースとして使用できますfont
ファイルを res/font/
フォルダに追加すると、フォントをリソースとしてバンドルできます。このフォントは R
ファイルにコンパイルされ、Android Studio で自動的に使用可能になります。フォント リソースにアクセスするには、font
リソースタイプを使用します。対象
フォント リソースにアクセスするには、
@font/myfont
または R.font.myfont
を使用します。
Android 4.1 搭載デバイスで XML in XML 機能を使用するには (API レベル 16)以降では、サポート ライブラリ 26.0 を使用してください。詳細情報 詳しくは、 サポート ライブラリを使用するをご覧ください。
フォントをリソースとして追加するには、Android で次の手順を行います。 スタジオ:
- res フォルダを右クリックし、[New] > [Android resource directory] に移動します。「 [New Resource Directory] ウィンドウが表示されます。
- [Resource type] リストで [font] を選択し、
OK:
注: リソース ディレクトリの名前は font にする必要があります。
図 1. フォント リソース ディレクトリの追加。
- フォント ファイルを
font
フォルダに追加します。下記のフォルダ構造により、
R.font.dancing_script
、R.font.lobster
、R.font.typo_graphica
が生成されます。図 2. フォント ファイルを
res/font
ディレクトリに追加します。 - フォント ファイルをダブルクリックして、エディタでフォントをプレビューします。
図 3. フォント ファイルをプレビューする。
フォント ファミリーを作成する
フォント ファミリーとは、スタイルと太さの詳細を含むフォント ファイルのセットです。 Android では、スタイルとウェイトをそれぞれ個別のリソースとして参照するのではなく、新しいフォント ファミリーを XML リソースとして作成し、単一のユニットとしてアクセスすることができます。これにより、システムで正しいフォントが テキスト スタイルに応じて変わります。
フォント ファミリーを作成するには、Android Studio で次の手順を行います。
font
フォルダを右クリックして以下を選択します。 新規 >フォント リソース ファイル。[New Resource File] ウィンドウが表示されます。- ファイル名を入力し、[OK] をクリックします。新しいフォント リソース XML がエディタで開きます。
- 各フォント ファイル、スタイル、ウェイト属性を
<font>
要素で囲みます。次の XML は、フォント関連の属性をフォント リソース XML に追加する方法を示しています。<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>
XML レイアウトでフォントを使用する
フォントは、単一のフォント ファイルか、任意のフォント フォントのいずれかを使用して、
フォント ファミリー(TextView
)
編集するには、
fontFamily
属性。
注: フォント ファミリーを使用すると、必要に応じて TextView
が自動的に切り替わり、そのファミリーのフォント ファイルが使用されます。
TextView にフォントを追加する
TextView
のフォントを設定するには、次のいずれかを行います。
次のとおりです。
- レイアウト XML ファイルの
fontFamily
属性を、アクセスしたいフォント ファイルに設定します。<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
- [Properties] ウィンドウを開いて、
TextView
のフォントを設定します。- ビューを選択して、[Properties] ウィンドウを開きます。
注: [Properties] ウィンドウは、Design Editor が開いている場合のみ利用可能です。このウィンドウの下部で [Design] タブを選択します。
- [textAppearance] プロパティを展開し、[fontFamily] リストからフォントを選択します。
-
図 4. [Properties] ウィンドウからフォントを選択する。
- ビューを選択して、[Properties] ウィンドウを開きます。
図 5 の右端のペインに示されている Android Studio レイアウト プレビュー。
を使用すると、TextView
で設定したフォントをプレビューできます。
![レイアウト プレビューでのフォントのプレビュー](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/fonts-in-xml/xml-font-preview.png?authuser=0000&hl=ja)
図 5. レイアウト プレビューでのフォントのプレビュー。
スタイルにフォントを追加する
styles.xml
ファイルを開き、fontFamily
を設定します。
属性を、アクセスするフォント ファイルに追加します。
<style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item> </style>
プログラムでフォントを使用する
プログラムでフォントを取得するには、getFont(int)
メソッドを呼び出して、取得したいフォントのリソース識別子を指定します。このメソッドは、Typeface
オブジェクトを返します。システムは最適な
フォントの候補から情報が必要な場合は、
setTypeface(android.graphics.Typeface, int)
メソッドを使用して、特定のスタイルで書体を設定します。
注: TextView
自動的に行われます
Kotlin
val typeface = resources.getFont(R.font.myfont) textView.typeface = typeface
Java
Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);
サポート ライブラリを使用する
サポート ライブラリ 26.0 での XML フォントのサポート Android 4.1(API レベル 16)以降を搭載しているデバイスで利用できます。
注: サポート ライブラリを介して XML レイアウトでフォント ファミリーを宣言すると、 app 名前空間を使用して、フォントが読み込まれるようにします。
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:app="http://schemas.android.com/apk/res-auto"> <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/> <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" /> </font-family>
フォントをプログラムで取得するには、
ResourceCompat.getFont(Context, int)
メソッドを使用し、
Context
のインスタンスとリソース識別子。
Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)
Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);