概要
API レベル 26 以降、Android SDK では、レイアウトや描画可能なフォントと同様に、フォントをリソースとして扱うことができます。 Android サポート ライブラリ 26 NuGet は、API レベル 14 以上を対象とするアプリに新しいフォント API をバックポートします。
API 26 をターゲットにするか、Android サポート ライブラリ v26 をインストールした後、Android アプリケーションでフォントを使用するには、次の 2 つの方法があります。
- フォントを Android リソース としてパッケージ化します。これにより、フォントが常にアプリケーションで使用できるようになりますが、APK のサイズが大きくなります。
- フォント をダウンロードする – Android では、フォント プロバイダーからのフォントの ダウンロードもサポートされています。 フォント プロバイダーは、フォントが既にデバイス上にある場合にチェックします。 必要に応じて、フォントがダウンロードされ、デバイスにキャッシュされます。 このフォントは、複数のアプリケーション間で共有できます。
類似フォント (または複数の異なるスタイルを持つフォント) は、フォント ファミリに グループ化できます。 これにより、開発者はフォントの特定の属性 (太さなど) を指定でき、Android はフォント ファミリから適切なフォントを自動的に選択します。
Android サポート ライブラリ v26 では、フォントのサポートが API レベル 26 にバックポートされます。 以前の API レベルを対象とする場合は、XML 名前空間を app
宣言し、名前空間と名前空間を使用してさまざまなフォント属性に名前を android:
付ける app:
必要があります。 名前空間のみが android:
使用されている場合、フォントには API レベル 25 以下を実行しているデバイスは表示されません。 たとえば、次の XML スニペットは、API レベル 14 以降で動作する新しい フォント ファミリ リソースを宣言します。
<?xml version="1.0" encoding="utf-8"?>
<font-family
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
</font-family>
フォントが適切な方法で Android アプリケーションに提供されている限り、属性を設定することで UI ウィジェットにfontFamily
適用できます。 たとえば、次のスニペットは、TextView でフォントを表示する方法を示しています。
<TextView
android:text="The quick brown fox jumped over the lazy dog."
android:fontFamily="@font/sourcesanspro_regular"
app:fontFamily="@font/sourcesanspro_regular"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
このガイドではまず、Android リソースとしてフォントを使用する方法について説明し、次に実行時にフォントをダウンロードする方法について説明します。
リソースとしてのフォント
Android APK にフォントをパッケージ化すると、常にアプリケーションで使用できるようになります。 フォント ファイル (.TTF または .OTF ファイル) は、Xamarin.Android プロジェクトの Resources フォルダー内のサブディレクトリにファイルをコピーすることで、他のリソースと同様に Xamarin.Android アプリケーションに追加されます。 フォント リソースは、プロジェクトの Resources フォルダーのフォント サブディレクトリに保持されます。
Note
フォントには AndroidResource のビルド アクションが必要です。または、最終的な APK にはパッケージ化されません。 ビルド アクションは IDE によって自動的に設定されます。
似たフォント ファイルが多数ある場合 (たとえば、重みやスタイルが異なる同じフォント) は、それらをフォント ファミリにグループ化できます。
フォント ファミリ
フォント ファミリは、重みとスタイルが異なる一連のフォントです。 たとえば、太字フォントまたは斜体フォント用に個別のフォント ファイルがあるとします。 フォント ファミリは、Resources/font ディレクトリに保持される XML ファイル内の要素によってfont
定義されます。 各フォント ファミリには、独自の XML ファイルが必要です。
フォント ファミリを作成するには、まずすべてのフォントを Resources/font フォルダーに追加します。 次に、フォント ファミリのフォント フォルダーに新しい XML ファイルを作成します。 XML ファイルの名前には、参照されているフォントとのアフィニティや関係がありません。リソース ファイルには、任意の有効な Android リソース ファイル名を指定できます。 この XML ファイルには、1 つ以上font
の要素を含むルートfont-family
要素があります。 各 font
要素は、フォントの属性を宣言します。
次の XML は、さまざまなフォントの太さを定義する Sources Sans Pro フォントのフォント ファミリの例です。 これは、sourcesanspro.xmlという名前の Resources/font フォルダーにファイルとして保存されます。
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
<font android:font="@font/sourcesanspro_bold"
android:fontStyle="normal"
android:fontWeight="800"
app:font="@font/sourcesanspro_bold"
app:fontStyle="normal"
app:fontWeight="800" />
<font android:font="@font/sourcesanspro_italic"
android:fontStyle="italic"
android:fontWeight="400"
app:font="@font/sourcesanspro_italic"
app:fontStyle="italic"
app:fontWeight="400" />
</font-family>
属性 fontStyle
には、次の 2 つの値があります。
- 標準 – 通常のフォント
- 斜体 – 斜体のフォント
属性は fontWeight
CSS font-weight
属性に対応し、フォントの太さを参照します。 これは、100 から 900 の範囲の値です。 次の一覧では、一般的なフォントの太さの値とその名前について説明します。
- 薄い – 100
- エクストラライト – 200
- ライト – 300
- 標準 – 400
- 中 – 500
- 半太字 – 600
- 太字 – 700
- Extra Bold – 800
- 黒 – 900
フォント ファミリが定義されたら、レイアウト ファイルで 、textStyle
、属性をfontFamily
fontWeight
設定することで宣言型に使用できます。 たとえば、次の XML スニペットは、600 の太さのフォント (標準) と斜体のテキスト スタイルを設定します。
<TextView
android:text="Sans Source Pro semi-bold italic, 600 weight, italic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/sourcesanspro"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:fontWeight="600"
android:textStyle="italic"
/>
プログラムによるフォントの割り当て
フォントは、メソッドを使用してオブジェクトを Resources.GetFont
取得 Typeface
することでプログラムで設定できます。 多くのビューには、 TypeFace
ウィジェットにフォントを割り当てるために使用できるプロパティがあります。 このコード スニペットは、TextView でフォントをプログラムで設定する方法を示しています。
Android.Graphics.Typeface typeface = this.Resources.GetFont(Resource.Font.caveat_regular);
textView1.Typeface = typeface;
textView1.Text = "Changed the font";
この GetFont
メソッドは、フォント ファミリ内の最初のフォントを自動的に読み込みます。 特定のスタイルに一致するフォントを読み込むには、メソッドを使用します Typeface.Create
。 このメソッドは、指定したスタイルに一致するフォントの読み込みを試みます。 たとえば、このスニペットでは、Resources/fonts で定義されているフォント ファミリから太字Typeface
のオブジェクトを読み込もうとします。
var typeface = Typeface.Create("<FONT FAMILY NAME>", Android.Graphics.TypefaceStyle.Bold);
textView1.Typeface = typeface;
フォントのダウンロード
Android では、フォントをアプリケーション リソースとしてパッケージ化する代わりに、リモート ソースからフォントをダウンロードできます。 これは、APKのサイズを縮小する望ましい効果を持つことになります.
フォントは、フォント プロバイダーの支援を得て ダウンロードされます。 これは、デバイス上のすべてのアプリケーションへのフォントのダウンロードとキャッシュを管理する特殊なコンテンツ プロバイダーです。 Android 8.0 には、Google フォント リポジトリからフォントをダウンロードするためのフォント プロバイダーが 含まれています。 この既定のフォント プロバイダーは、Android サポート ライブラリ v26 を使用して API レベル 14 にバックポートされます。
アプリがフォントの要求を行うと、フォント プロバイダーは最初にチェックして、フォントが既にデバイス上にあるかどうかを確認します。 そうでない場合は、フォントのダウンロードが試行されます。 フォントをダウンロードできない場合、Android は既定のシステム フォントを使用します。 フォントがダウンロードされると、最初の要求を行ったアプリだけでなく、デバイス上のすべてのアプリケーションで使用できるようになります。
フォントのダウンロード要求が行われた場合、アプリはフォント プロバイダーに直接クエリを実行しません。 代わりに、アプリは API の FontsContract
インスタンス (または FontsContractCompat
サポート ライブラリ 26 が使用されている場合) を使用します。
Android 8.0 では、次の 2 つの方法でフォントのダウンロードがサポートされています。
- ダウンロード可能なフォントをリソース として宣言する – アプリは、XML リソース ファイルを介して Android にダウンロード可能なフォントを宣言できます。 これらのファイルには、アプリの起動時に Android がフォントを非同期的にダウンロードしてデバイスにキャッシュするために必要なすべてのメタデータが含まれます。
- プログラムによる – Android API レベル 26 の API を使用すると、アプリケーションの実行中に、アプリケーションでプログラムでフォントをダウンロードできます。 アプリは特定の
FontRequest
フォントのオブジェクトを作成し、このオブジェクトをクラスにFontsContract
渡します。 はFontsContract
、FontRequest
フォント プロバイダーからフォントを受け取り、 取得します。 Android では、フォントが同期的にダウンロードされます。 a を作成するFontRequest
例については、このガイドの後半で説明します。
使用する方法に関係なく、フォントをダウンロードする前に Xamarin.Android アプリケーションに追加する必要があるリソース ファイル。 まず、フォント ファミリの一部として Resources/font ディレクトリの XML ファイルでフォントを宣言する必要があります。 このスニペットは、Android 8.0 (またはサポート ライブラリ v26) に付属する既定のフォント プロバイダーを使用して、Google Fonts オープン ソース コレクションからフォントをダウンロードする方法の例です。
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fontProviderAuthority="com.google.android.gms.fonts"
android:fontProviderPackage="com.google.android.gms"
android:fontProviderQuery="VT323"
android:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="VT323"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
>
</font-family>
この font-family
要素には次の属性が含まれています。Android がフォントをダウンロードするために必要な情報を宣言します。
- fontProviderAuthority – 要求に使用するフォント プロバイダーの権限。
- fontPackage – 要求に使用するフォント プロバイダーのパッケージ。 これは、プロバイダーの ID を確認するために使用されます。
- fontQuery – これは、フォント プロバイダーが要求されたフォントを見つけるのに役立つ文字列です。 フォント クエリの詳細は、フォント プロバイダーに固有です。 Downloadable Fonts サンプル アプリのクラスは
QueryBuilder
、Google Fonts Open Source Collection のフォントのクエリ形式に関する情報を提供します。 - fontProviderCerts – プロバイダーに署名する必要がある証明書のハッシュ セットの一覧を含むリソース配列。
フォントを定義したら、ダウンロードに関連するフォント証明書に関する情報を提供することが必要になる場合があります。
フォント証明書
フォント プロバイダーがデバイスにプレインストールされていない場合、またはアプリがライブラリを使用 Xamarin.Android.Support.Compat
している場合、Android ではフォント プロバイダーのセキュリティ証明書が必要です。 これらの証明書は、Resources/values ディレクトリに保持されている配列リソース ファイルに一覧表示されます。
たとえば、次の XML は Resources/values/fonts_cert.xml という名前で、Google フォント プロバイダーの証明書を格納します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="com_google_android_gms_fonts_certs">
<item>@array/com_google_android_gms_fonts_certs_dev</item>
<item>@array/com_google_android_gms_fonts_certs_prod</item>
</array>
<string-array name="com_google_android_gms_fonts_certs_dev">
<item>
MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
</item>
</string-array>
<string-array name="com_google_android_gms_fonts_certs_prod">
<item>
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
</item>
</string-array>
</resources>
これらのリソース ファイルを配置すると、アプリはフォントをダウンロードできます。
ダウンロード可能なフォントをリソースとして宣言する
ダウンロード可能なフォントをAndroidManifest.XMLに一覧表示することで、Android はアプリの初回起動時にフォントを非同期的にダウンロードします。 フォント自体は、次のような配列リソース ファイルに一覧表示されます。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="downloadable_fonts" translatable="false">
<item>@font/vt323</item>
</array>
</resources>
これらのフォントをダウンロードするには、要素の子として追加meta-data
して、AndroidManifest.XMLで宣言するapplication
必要があります。 たとえば、ダウンロード可能なフォントが Resources/values/downloadable_fonts.xml のリソース ファイルで宣言されている場合、次のスニペットをマニフェストに追加する必要があります。
<meta-data android:name="downloadable_fonts" android:resource="@array/downloadable_fonts" />
Font API を使用したフォントのダウンロード
オブジェクトをインスタンス化 FontRequest
し、それをメソッドに渡すことで、プログラムによってフォントを FontContractCompat.RequestFont
ダウンロードできます。 メソッドはFontContractCompat.RequestFont
最初にチェックしてフォントがデバイスに存在するかどうかを確認し、必要に応じてフォント プロバイダーに非同期的にクエリを実行し、アプリのフォントのダウンロードを試みます。 フォントをダウンロードできない場合 FontRequest
、Android は既定のシステム フォントを使用します。
FontRequest
オブジェクトには、フォント プロバイダーがフォントを検索してダウンロードするために使用する情報が含まれています。 A FontRequest
には、次の 4 つの情報が必要です。
- フォント プロバイダー機関 – 要求に使用するフォント プロバイダーの権限。
- フォント パッケージ – 要求に使用するフォント プロバイダーのパッケージ。 これは、プロバイダーの ID を確認するために使用されます。
- フォント クエリ – これは、フォント プロバイダーが要求されたフォントを見つけるのに役立つ文字列です。 フォント クエリの詳細は、フォント プロバイダーに固有です。 文字列の詳細は、フォント プロバイダーに固有です。 Downloadable Fonts サンプル アプリのクラスは
QueryBuilder
、Google Fonts Open Source Collection のフォントのクエリ形式に関する情報を提供します。 - フォント プロバイダー証明書 – プロバイダーが署名する必要がある証明書のハッシュ セットの一覧を含むリソース配列。
このスニペットは、新しい FontRequest
オブジェクトをインスタンス化する例です。
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms", <FontToDownload>, Resource.Array.com_google_android_gms_fonts_certs);
前のスニペット FontToDownload
では、Google Fonts Open Source コレクションのフォントに役立つクエリです。
メソッドに FontRequest
渡す前に FontContractCompat.RequestFont
、次の 2 つのオブジェクトを作成する必要があります。
FontsContractCompat.FontRequestCallback
– これは拡張する必要がある抽象クラスです。 完了するとRequestFont
呼び出されるコールバックです。 Xamarin.Android アプリでは、ダウンロードが失敗または成功したときに実行されるアクションを提供し、サブクラス化FontsContractCompat.FontRequestCallback
してオーバーライドOnTypefaceRequestFailed
OnTypefaceRetrieved
する必要があります。Handler
– これは、Handler
必要に応じてスレッドにフォントをダウンロードするために使用RequestFont
されます。 フォントは UI スレッドにダウンロードしないでください 。
このスニペットは、Google Fonts オープン ソース コレクションからフォントを非同期的にダウンロードする C# クラスの例です。 インターフェイスを FontRequestCallback
実装し、完了すると C# イベントを FontRequest
発生させます。
public class FontDownloadHelper : FontsContractCompat.FontRequestCallback
{
// A very simple font query; replace as necessary
public static readonly String FontToDownload = "Courgette";
Android.OS.Handler Handler = null;
public event EventHandler<FontDownloadEventArg> FontDownloaded = delegate
{
// just an empty delegate to avoid null reference exceptions.
};
public void DownloadFonts(Context context)
{
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms",FontToDownload , Resource.Array.com_google_android_gms_fonts_certs);
FontsContractCompat.RequestFont(context, request, this, GetHandlerThreadHandler());
}
public override void OnTypefaceRequestFailed(int reason)
{
base.OnTypefaceRequestFailed(reason);
FontDownloaded(this, new FontDownloadEventArg(null));
}
public override void OnTypefaceRetrieved(Android.Graphics.Typeface typeface)
{
base.OnTypefaceRetrieved(typeface);
FontDownloaded(this, new FontDownloadEventArg(typeface));
}
Handler GetHandlerThreadHandler()
{
if (Handler == null)
{
HandlerThread handlerThread = new HandlerThread("fonts");
handlerThread.Start();
Handler = new Handler(handlerThread.Looper);
}
return Handler;
}
}
public class FontDownloadEventArg : EventArgs
{
public FontDownloadEventArg(Android.Graphics.Typeface typeface)
{
Typeface = typeface;
}
public Android.Graphics.Typeface Typeface { get; private set; }
public bool RequestFailed
{
get
{
return Typeface != null;
}
}
}
このヘルパーを使用するには、新 FontDownloadHelper
しいヘルパーが作成され、イベント ハンドラーが割り当てられます。
var fontHelper = new FontDownloadHelper();
fontHelper.FontDownloaded += (object sender, FontDownloadEventArg e) =>
{
//React to the request
};
fontHelper.DownloadFonts(this); // this is an Android Context instance.
まとめ
このガイドでは、ダウンロード可能なフォントとフォントをリソースとしてサポートするための Android 8.0 の新しい API について説明しました。 APK に既存のフォントを埋め込み、レイアウトで使用する方法について説明しました。 また、Android 8.0 では、プログラムで、またはリソース ファイル内のフォント メタデータを宣言することによって、フォント プロバイダーからフォントをダウンロードする方法についても説明しました。