android:fontFamilyの有効な値とそれらのマッピング先は?


266

この質問への答えとして、ユーザーはandroid:fontFamily12個のバリアントの値をリストします(以下を参照)。これらの値はどこから来るのですか?のドキュメントにandroid:fontFamilyは、この情報がどこにも記載されていません(ここここを確認しまし)。文字列はAndroidのstyles.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を正しく使用することを含む)、ファイルを確認する前に作成されたスタイルの一部にあるすべての冗長性を削除したいと思います。

回答:


346

これらの値はどこから来るのですか?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>

クイックリファレンスとして、次のように表示されます。


2
ハハ:DIは実際にその前にサイトを知っていたので、見つけるのは難しくなかった。しかし、今後の参考のために:私はあなたなどのみのAPIの、ブログの記事、リリースノートに検索を制限することができるので、Google検索上developer.android.comで検索を使用することを好む
アフマド

8
そして興味があれば:これはフォントが定義される場所です。このクラスは、フォントをロードし、これは afaictそれらを管理します。
2013年

1
@androiddeveloper完了。Roboto Blackはフォントの色を表すも​​のではなく、Roboto Boldの「より太字」バージョンにすぎません。下部に参照画像を追加しました。
アフマド

1
@Ahmadこれを明確にしていただきありがとうございます。これがあなたの+1です... :)
Android開発者

2
また、のfontFamilyで使用する別名がたくさんありandroid.googlesource.com/platform/frameworks/base/+/master/data/...
Pauland

110

利用可能なフォント(Oreo以降)

すべてのフォントのプレビュー

マテリアルデザインタイポグラフィのページには、フォントとスタイルを選択する上でこれらのフォントや提案のいくつかのためのデモを持っています。

コード探偵の場合:fonts.xmlAndroidフォントの決定的かつ拡大し続けるリストです。


これらのフォントを使用する

android:fontFamilyandroid:textStyle属性を設定します。

<!-- Roboto Bold -->
<TextView
    android:fontFamily="sans-serif"
    android:textStyle="bold" />

この表から目的の値に:

Font                     | android:fontFamily          | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin              | sans-serif-thin             |
Roboto Light             | sans-serif-light            |
Roboto Regular           | sans-serif                  |
Roboto Bold              | sans-serif                  | bold
Roboto Medium            | sans-serif-medium           |
Roboto Black             | sans-serif-black            |
Roboto Condensed Light   | sans-serif-condensed-light  |
Roboto Condensed Regular | sans-serif-condensed        |
Roboto Condensed Medium  | sans-serif-condensed-medium |
Roboto Condensed Bold    | sans-serif-condensed        | bold
Noto Serif               | serif                       |
Noto Serif Bold          | serif                       | bold
Droid Sans Mono          | monospace                   |
Cutive Mono              | serif-monospace             |
Coming Soon              | casual                      |
Dancing Script           | cursive                     |
Dancing Script Bold      | cursive                     | bold
Carrois Gothic SC        | sans-serif-smallcaps        |

(Noto Sansは代替フォントです。直接指定することはできません)

注:この表はから派生していfonts.xmlます。各フォントのファミリ名とスタイルはfonts.xmlにリストされています。

<family name="serif-monospace">
    <font weight="400" style="normal">CutiveMono.ttf</font>
</family>

serif-monospaceしたがって、フォントファミリでありnormal、スタイルです。


互換性

基づいてログ fonts.xmlのと旧system_fonts.xml各フォントが追加されたとき、あなたが見ることができます:

  • アイスクリームサンドイッチ: Roboto regular、bold、italic、bold italic
  • ジェリービーン: Roboto light、light italic、condensed、condensed bold、condensed italic、condensed bold italic
  • Jelly Bean MR1: Robotoの細い斜体
  • ロリポップ:
    • Roboto中、中斜体、黒、黒斜体
    • 能登セリフ通常、太字、斜体、太字斜体
    • Cutive Mono
    • 近日公開
    • 踊る台本
    • カロワゴシックSC
    • 能登さん
  • オレオMR1: Roboto凝縮媒体

1
Androidバージョンに関するログをどのように見つけましたか?
Android開発者

3
@androiddeveloper各行が追加された日付を見ていました。特定のバージョンで使用可能なフォントを正確に知るには、そのバージョンのsystem_fonts.xmlを確認します(例:Lollipop:android.googlesource.com/platform/frameworks/base
+/…

これについて私の唯一の不満はアルファベット順ではないことです:pしかし、それでも!これが最良の答えです。ありがとうございました!
T.Woody 2018

9

私の知る限り、カスタムフォントをxmlまたはテーマで宣言することはできません。私は通常、インスタンス化に独自のフォントを設定するtextviewを拡張するカスタムクラスを作成し、それをレイアウトxmlファイルで使用します。

つまり:

public class Museo500TextView extends TextView {
    public Museo500TextView(Context context, AttributeSet attrs) {
        super(context, attrs);      
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
    }
}

そして

<my.package.views.Museo900TextView
        android:id="@+id/dialog_error_text_header"
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:textSize="12sp" />

1
これは、リサイクルの
ビュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.