web-dev-qa-db-ja.com

Android:fontFamilyの有効な値とそれらは何にマッピングされますか?

この質問への答え で、ユーザーはAndroid:fontFamilyと12の変種の値をリストします(下記参照)。これらの値はどこから来るのでしょうか。 Android:fontFamilyのドキュメントでは、この情報はどこにも記載されていません( here 、および here をチェックしました)。文字列はさまざまな場所で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の正しい使用を含む)、ファイルを見る前に作成されたいくつかのスタイルにあるすべての冗長性を取り除きたいと思います。

244

これらの値はどこから来るのでしょうか。 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>

Thin-italic

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

簡単に参照すると、これはそれらがすべてのように見える方法です:

333
Ahmad

利用可能なフォント(オレオ現在)

Preview of all fonts

Material Design Typography ページには、これらのフォントのいくつかのデモとフォントとスタイルの選択に関する提案があります。

コードの俗説の場合: fonts.xml は、Androidフォントの最も信頼がおけるリストです。


これらのフォントを使う

Android:fontFamilyおよび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にリストされています。

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

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


互換性

Fonts.xmlの log および以前の system_fonts.xml に基づいて、各フォントがいつ追加されたかを知ることができます。

  • アイスクリームサンドイッチ: Roboto正規、太字、斜体、および太字斜体
  • ジェリービーン: Robotoライト、ライトイタリック、凝縮、凝縮ボールド、凝縮イタリック、および凝縮ボールドイタリック
  • ジェリービーンMR1: Roboto薄くて薄いイタリック
  • ロリポップ:
    • Robotoミディアム、ミディアムイタリック、黒、黒イタリック
    • 能登セリフ通常、太字、斜体、太字斜体
    • Cutive Mono
    • 近日公開
    • 踊る台本
    • キャロアゴシックSC
    • 能登さん
  • オレオMR1: ロボト凝縮媒体
97
Newtonx

私の知る限りでは、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" />
9
trippedout