web-dev-qa-db-ja.com

APIでXMLのフォントを使用する<26

https://developer.Android.com/preview/features/working-with-fonts.html

Android API 26はこれをサポートしていますが、resのリソースとしてフォントの使用を提供できるサポートライブラリはありますか? [XMLのフォント]はいの場合、どのAPIまでサポートされていますか?

Android O SDK機能について話します。これにより、上記のリンクにあるようにXMLでフォントを設定できます。これは、MMのネイティブ機能ではありません。

19
sziraqui

Googleによると、次の条件が満たされている限り、Android 4.0+(API 14 +)でサポートされています。

  • support libraryバージョン26.0.0-beta1以降を使用している
  • 使用しているAppCompat

ソース:

XMLのフォント-サポートライブラリの使用

サポートライブラリの改訂履歴

Android 8(API 26)より前のバージョンのアプリウィジェットでこれを使用できることを望んでいましたが、AppCompatTextViewはアプリウィジェットで使用できないため、不可能です。サードパーティの代替品はありません。 to Android Oの 'XMLのフォント'など Caligraphy ライブラリはアプリウィジェットでも機能します。

アプリウィジェットの唯一の代替手段は、TextViewの代わりにImageViewを使用することですおよびRemoteViewsメソッドを使用するsetImageViewUri(...)およびsetImageViewBitmap(...)、両方とも問題があります。

29
ra3o.ra3

26未満のAPIでフォントファミリをサポートするには、使用する必要があります

<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>

の代わりに

<font Android:fontStyle="normal" Android:fontWeight="400" Android:font="@font/myfont-Regular"/>
20
Yuri Misyac

Yuriの答えを完成させるために、フォントはAPI 16でサポートされています。フォントファミリを作成するには(フォントの異なるウェイトが指定されている場合)、/ res/font /の下にmy_font_family.xmlを作成する必要があります書かれているとおり ドキュメント内

<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="normal" app:fontWeight="600" app:font="@font/myfont_semi_bold" />
    <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont_italic" />
</font-family>

TextView xmlでこれを使用するには、app:fontFamily="@font/my_font_family"を使用する必要があります。app:の代わりにAndroid:に注意してください。

特定のfontWeightを選択するには、Android:textFontWeight="200"を使用できますが、API> = 28でのみ機能します。 API 28より前の重量に基づいて異なるフォントを選択するには、2つのオプションがあります。 Android:textStyle="bold"を使用して、「normal/italic/bold」のみを指定できますが、正確な重量は指定できません。または、app:fontFamily="@font/myfont_semi_bold"のような特定のフォントの重みを直接使用できます。

14

一部のユーザーは、xmlからアプリでカスタムフォントを使用する手順を探してこのページに移動します。以下がその方法です。

フォントリソースディレクトリはデフォルトでは存在しません。 ドキュメントはこちら [あまりにも多くの作業]に従って手動で作成できます。

またはGUI-からフォントセレクターを使用

  • [デザイン]タブでTextViewを選択します。

  • fontFamily xml属性のドロップダウンを開きます。

  • 「その他のフォント」までスクロールします。

  • 表示されるポップアップから「ダウンロード可能なフォント」を選択します。

Android Studioは、上記のドキュメントに記載されている必要な宣言を使用して、フォントリソースディレクトリを自動的に作成します。この手順の後、カスタムフォントファイル(myfont.ttfなど)をフォントディレクトリにコピーし、たとえばxmlから目的のフォントを設定できます。

<TextView
     Android:fontFamily="@font/myfont"
     Android:id="@+id/aboutus_head_textview"
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     Android:text="@string/who_are_we" />

アプリ全体で同じフォントを使用する場合は、styles.xmlでAppThemeのfontFamilyを設定できます。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- custom font for the entire app -->
        <item name="fontFamily">@font/myfont</item>
    </style>

[接頭辞fontFamilyにAndroid:上記が機能しなかった場合]

スクリーンショット:

Screenshot 1

Screenshot 2

注:この回答は、Android Studio 3+およびサポートライブラリバージョン26 +を使用していることを前提としています。

7
sziraqui

次に例を示します。最小SDKサポート18(アプリ内)

https://github.com/mukundrd/androidFonts

2
Mukund Desai