android:fontFamily の有効な値とそのマッピング先は? 質問する

android:fontFamily の有効な値とそのマッピング先は? 質問する

の回答ではこの質問ユーザーはandroid:fontFamilyと 12 のバリアントの値をリストしています (下記参照)。これらの値はどこから来るのでしょうか? のドキュメントにはandroid:fontFamilyこの情報はどこにも記載されていません (私が調べたところここ、 そしてここ)。文字列はAndroidにリストされていますスタイル.xmlファイルはさまざまな場所にありますが、これらはどのようにして Roboto フォントにマップされるのでしょうか?

Android 4.1 / 4.2 以降では、次の Roboto フォント ファミリが利用できます。

android:fontFamily="sans-serif"           // roboto regular  
android:fontFamily="sans-serif-light"     // roboto light  
android:fontFamily="sans-serif-condensed" // roboto condensed  
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)  
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

これと組み合わせて

android:textStyle="normal|bold|italic" 

12 種類のバリエーションが可能です:

  • 通常
  • イタリック
  • 大胆な
  • ボールドイタリック
  • ライト
  • ライトイタリック
  • 薄い
  • 細字イタリック
  • 凝縮レギュラー
  • 凝縮イタリック体
  • 凝縮太字
  • 凝縮太字斜体

私が作業しているアプリケーションのファイルでstyles.xml、誰かがこれをフォント ファミリとしてリストしましたが、これは間違いなく間違っています。

<item name="android:fontFamily">Roboto-Regular.ttf</item>

アプリのテーマを正しく設定し (fontFamily を正しく使用することを含む)、ファイルを確認する前に作成された一部のスタイルにある冗長性をすべて削除したいと思います。

ベストアンサー1

これらの値はどこから来るのでしょうか?android:fontFamilyのドキュメントにはこの情報はどこにも記載されていません

これらは確かにドキュメントには記載されていない。しかし、言及されている。ここ「フォント ファミリ」セクションの下にあります。このドキュメントには、Android Jelly Bean 4.1 のすべての新しいパブリック API がリストされています。

私が作業しているアプリケーションのstyles.xmlファイルで、誰かがこれをフォント ファミリとしてリストしていますが、これは間違いなく間違いです。

はい、それは間違っています。フォント ファイルを参照するのではなく、上記のリンク先のドキュメントに記載されているフォント名を使用する必要があります。この場合、次のようにする必要があります。

<item name="android:fontFamily">sans-serif</item>

すでに述べたリンク先の回答のように、12 種類のバリエーションが考えられます。

Android Jelly Bean (4.1) - API 16 に追加されました:

通常(デフォルト):

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item> 

イタリック体:

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>

大胆な

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>

ボールドイタリック

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>

ライト

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>

ライトイタリック:

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>

薄い

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>

細字イタリック体:

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>

凝縮レギュラー

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>

圧縮イタリック体:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>

凝縮太字:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>

圧縮された太字斜体:

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>

Android Lollipop (v5.0) - API 21 に追加されました:

中くらい

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>

中イタリック体:

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>

<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>

簡単に参照できるように、これらはすべて次のようになります。

おすすめ記事