web-dev-qa-db-ja.com

指定方法は? styles.xmlのRoboto-MediumまたはRoboto-Black

このような投稿 AndroidでTextViewのfontFamilyを変更する方法 は、styles.xmlで指定できるRobotoフォントのバリアントがAndroid 4.2に要約されることを示唆しています:

  • レギュラー
  • イタリック
  • 大胆な
  • ボールドイタリック
  • ライトイタリック
  • 薄いです
  • 薄いイタリック
  • 凝縮されたレギュラー
  • 凝縮イタリック体
  • 凝縮された太字
  • 凝縮された太字斜体

それは、例えばを使用してTextViewsをスタイルする機能を除外します。 Roboto-MediumまたはRoboto-Blackフォント。

しかし、GoogleがTextViewのスタイリングに使用できないシステム全体のフォントを追加するのはなぜですか?確かに、styles.xml内からすべてのRobotoフォントを指定する方法が必要です(つまり、フォントをAssetsとして埋め込み、コードでカスタムTextViewを作成する必要はありません)-しかし、どのように?

61
ckibsen

On Android 5.0では、sans-serif-medium

Google iosched 2014 から取得したこのソリューションでは、sans-serif on Android pre-v21:

values/styles.xml

<style name="MyStyle">
    <item name="Android:fontFamily">@string/font_fontFamily_medium</item>
</style>

values/fonts.xml

<string name="font_fontFamily_medium">sans-serif</string>

values-v21/fonts.xml

<string name="font_fontFamily_medium">sans-serif-medium</string>
90
rciovati

新しいソリューション

Google I/O '17res/font folderで複数のフォントファミリーを作成できます

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.Android.com/apk/res-auto">
<font
    app:font="@font/roboto_light"
    app:fontStyle="normal"
    app:fontWeight="300" />
<font
    app:font="@font/roboto_bold"
    app:fontStyle="normal"
    app:fontWeight="700" />

</font-family>

どこでも使用できます

 <style name="AppTheme.DefaultTextView" parent="Android:style/Widget.TextView">
    <item name="Android:textColor">@color/colorBlack</item>
    <item name="Android:fontFamily">@font/font_family_roboto</item>
</style>

font folderfont family

古い回答

ヤコブ・エリクソンに感謝

元の回答

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

スタイルで:

<style name="AppTheme.DefaultTextView" parent="Android:style/Widget.TextView">
    <item name="Android:textSize">@dimen/text_view_text_size</item>
    <item name="Android:textColor">@color/black</item>
    <item name="Android:fontFamily">sans-serif-light</item>
    <item name="Android:textStyle">normal</item>
</style>

アプリのテーマ:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/gray</item>
    <item name="Android:textViewStyle">@style/AppTheme.DefaultTextView</item>
</style>
33

Android-RobotoTextView または Calligraphy のようなカスタムライブラリを使用することをお勧めします。これらのいずれかを使用すると、属性を使用してxmlのビューのフォントを設定できるため、styles.xmlに入れることができます。また、以前のバージョンのAndroid 4.0よりも

4
Rampo

サポートライブラリ26が導入されました XMLのフォントを使用 で、Android API 14。

フォントをリソースとして追加するには、Android Studioで次の手順を実行します。

  1. Resフォルダーを右クリックし、[新規]> [Android resource directory。New Resource Directory]ウィンドウに移動します。

  2. [リソースの種類]リストで、フォントを選択し、[OK]をクリックします。注:リソースディレクトリの名前はフォントである必要があります。

Figure 1. Adding the font resource directory

  1. フォントフォルダーにフォントファイルを追加します。以下のフォルダー構造は、R.font.dancing_scriptR.font.lobster、およびR.font.typo_graphicaを生成します。

Figure 2. Adding the font files in the resource directory

  1. フォントファイルをダブルクリックして、エディターでファイルのフォントをプレビューします。

Figure 3. Previewing the font file

TextViewのフォントを設定するには、レイアウトXMLファイルで、アクセスするフォントファイルにfontFamily属性を設定します。

<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:fontFamily="@font/lobster"/>

Android Studioレイアウトプレビューを使用すると、TextViewでフォントセットをプレビューできます。

Figure 4. Previewing fonts in layout preview

フォントをスタイルに追加するには、styles.xmlを開き、アクセスするフォントファイルにfontFamily属性を設定します。

<style name="customfontstyle" parent="@Android:style/TextAppearance.Small">
<item name="Android:fontFamily">@font/lobster</item>

アプリにフォントをバンドルしたくない場合は、 ダウンロード可能なフォント

3
Andrew Orobator