XML でフォントに指定された太さを使用する方法 質問する

XML でフォントに指定された太さを使用する方法 質問する

使用方法XML のフォントこの機能を使用すると、フォント ファミリに対してさまざまなフォントの太さを指定できます。例:

<?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/archivo_narrow_regular" android:fontWeight="400" android:fontStyle="normal"
        app:font="@font/archivo_narrow_regular" app:fontWeight="400" app:fontStyle="normal"/>

    <font android:font="@font/archivo_narrow_regular_italic" android:fontWeight="400" android:fontStyle="italic"
        app:font="@font/archivo_narrow_regular_italic" app:fontWeight="400" app:fontStyle="italic"/>

    <font android:font="@font/archivo_narrow_medium" android:fontWeight="500" android:fontStyle="normal"
        app:font="@font/archivo_narrow_medium" app:fontWeight="500" app:fontStyle="normal"/>

    <font android:font="@font/archivo_narrow_medium_italic" android:fontWeight="500" android:fontStyle="italic"
        app:font="@font/archivo_narrow_medium_italic" app:fontWeight="500" app:fontStyle="italic"/>

    <font android:font="@font/archivo_narrow_semibold" android:fontWeight="600" android:fontStyle="normal"
        app:font="@font/archivo_narrow_semibold" app:fontWeight="600" app:fontStyle="normal"/>

    <font android:font="@font/archivo_narrow_semibold_italic" android:fontWeight="600" android:fontStyle="italic"
        app:font="@font/archivo_narrow_semibold_italic" app:fontWeight="600" app:fontStyle="italic"/>

    <font android:font="@font/archivo_narrow_bold" android:fontWeight="700" android:fontStyle="normal"
        app:font="@font/archivo_narrow_bold" app:fontWeight="700" app:fontStyle="normal"/>

    <font android:font="@font/archivo_narrow_bold_italic" android:fontWeight="700" android:fontStyle="italic"
        app:font="@font/archivo_narrow_bold_italic" app:fontWeight="700" app:fontStyle="italic"/>

</font-family>

しかし、XML(レイアウト/スタイル)ファイルでもJavaコードでも、これらの重みを実際にどのように使用すればよいのかわかりません。fontWeightには属性がないためTextViewTypeface作成されたオブジェクトResourcesCompat.getFont(context, R.font.archivo_narrow)フォントの太さについては何も言及されていません。

特定のフォント リソース (つまり ) を指定できるのはわかっていますが、に属性をR.font.archivo_narrow_semibold設定する意味は何でしょうか?fontWeightfont-family


アップデート

新たな静的create(Typeface family, int weight, boolean italic)メソッドはAPIレベル28で追加され、getWeight()インスタンス メソッド。これにより、最終的に Java コードで属性を使用できるようになりますfontWeight。ただし、API レベル 28 以上の場合のみで、サポート ライブラリに類似するものは見つかりませんでした。

これは便利ですし、このfontWeight属性が過去には何の役にも立たなかったことを示していますが、XML スタイル設定で重みを使用できれば本当にいいと思います。

ベストアンサー1

これは、Android アプリのフォント管理とサイズ設定に関する Web 標準に準拠した Android のようです。

「font-weight」プロパティは、通常や太字などのフォントの太さを定義するために使用されます。

ただし、他のすべてのウェイトには、100 から 900 までの数値範囲が使用されます。Web フォントの課題の 1 つは、ほとんどの Web ブラウザーが標準と太字以外のフォント ウェイトを適切にサポートしていないことです。次の表は、ウェイトと数値定義の可能なマッピングを示しています。

100    Thin (Hairline)
200    Extra Light (Ultra Light)
300    Light
400    Normal (Regular)
500    Medium
600    Semi Bold (Demi Bold)
700    Bold
800    Extra Bold (Ultra Bold)
900    Black (Heavy)
950    Extra Black (Ultra Black)

フォントの太さについての詳細はこちらをご覧くださいここ


cc_モントセラト_bold.xml

<?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/montserrat_bold"
        android:fontStyle="normal"
        android:fontWeight="700"
        app:font="@font/montserrat_bold"
        app:fontStyle="normal"
        app:fontWeight="700" />
    <font
        android:font="@font/montserrat_bolditalic"
        android:fontStyle="italic"
        android:fontWeight="700"
        app:font="@font/montserrat_bolditalic"
        app:fontStyle="italic"
        app:fontWeight="700" />

</font-family>

cc_モントセラト_regular.xml

<?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/montserrat_regular"
        android:fontStyle="normal"
        android:fontWeight="400"
        app:font="@font/montserrat_regular"
        app:fontStyle="normal"
        app:fontWeight="400" />
    <font
        android:font="@font/montserrat_italic"
        android:fontStyle="italic"
        android:fontWeight="400"
        app:font="@font/montserrat_italic"
        app:fontStyle="italic"
        app:fontWeight="400" />


</font-family>

Kotlin の使用法:

val textView = dialog.findViewById<TextView>(android.R.id.message) as TextView
val typeface = ResourcesCompat.getFont(context,R.font.cc_montserrat_regular)
        textView.typeface = typeface

Android プロジェクトのスクリーンショット:

ここに画像の説明を入力してください

おすすめ記事