この質問への答え で、ユーザーは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の正しい使用を含む)、ファイルを見る前に作成されたいくつかのスタイルにあるすべての冗長性を取り除きたいと思います。
これらの値はどこから来るのでしょうか。 Android:fontFamilyのドキュメントには、この情報が記載されている場所はありません。
これらは確かにドキュメントに記載されていません。しかし、それらは ここ セクション 'フォントファミリー'の下で言及されています。この文書は、Android Jelly bean 4.1用のすべての新しい公開APIをリストしています。
私が取り組んでいるアプリケーションのstyles.xmlファイルでは、これをフォントファミリーとしてリストしていますが、それは間違いなく間違いありません。
はい、それは間違っています。あなたはフォントファイルを参照しません、あなたは上記のリンクされたドキュメントで言及されたフォント名を使わなければなりません。この場合それはこれであるはずでした:
<item name="Android:fontFamily">sans-serif</item>
既に述べたリンク先の回答のように、12の変形が可能です。
通常(デフォルト):
<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>
中:
<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>
簡単に参照すると、これはそれらがすべてのように見える方法です:
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 に基づいて、各フォントがいつ追加されたかを知ることができます。
私の知る限りでは、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" />