使用方法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
には属性がないためTextView
、Typeface
作成されたオブジェクトResourcesCompat.getFont(context, R.font.archivo_narrow)
フォントの太さについては何も言及されていません。
特定のフォント リソース (つまり ) を指定できるのはわかっていますが、に属性をR.font.archivo_narrow_semibold
設定する意味は何でしょうか?fontWeight
font-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 プロジェクトのスクリーンショット: