android:fontFamilyの有効な値と、それらのマップには何がありますか?


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

アンドロイド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を正しく使用することを含む)アプリケーションのテーマを正しく設定し、ファイルを見る前に作成されたいくつかのスタイルに含まれるすべての冗長性を削除したいと思います。



Answers



これらの値はどこから得られますか? 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>

クイックリファレンスとして、以下のようになります。




使用可能なフォント(Oreoの場合)

マテリアルデザインタイポグラフィのページには、これらのフォントのデモやフォントやスタイルの選択に関するヒントがあります。

コード詐欺の場合: fonts.xmlはAndroidフォントの決定的かつ拡張されたリストです。

これらのフォントの使用

android:fontFamilyおよびandroid:textStyle属性をandroid: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 。 各フォントのファミリ名とスタイルは、fonts.xmlにリストされています。

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

serif-monospaceはフォントファミリーであり、 normalはスタイルです。

互換性

fonts.xmlと以前のsystem_fonts.xmlログに基づいて、各フォントがいつ追加されたかがわかります。

  • アイスクリームサンドウィッチ: Roboto、太字、イタリック、太字イタリック
  • ゼリー・ビーン:ロボト光、明るいイタリック、凝縮、太字の凝縮、斜体の凝縮、太字の太字の凝縮
  • ゼリービーンMR1: Roboto薄くて薄いイタリック
  • Lollipop:
    • Roboto媒体、中イタリック、黒、黒イタリック
    • ノート・セリフ、ノーマル、太字、イタリック、太字イタリック
    • クインテットモノ
    • 近日公開
    • ダンススクリプト
    • Carrois Gothic SC
    • ノーサンズ
  • Oreo MR1: Roboto凝縮培地



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

すなわち:

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" />