web-dev-qa-db-ja.com

Android ProjectでRobotoフォントを使用する方法

私は1つAndroidプロジェクトを開発しました。このプロジェクトでは、テキストフォントのデフォルトはAndroid:sansです。

次に、プロジェクト全体のデフォルトのテキストフォントをrobotoフォントに置き換えます。

これどうやってするの?

50
Jeeva

Robotoフォントはこちらからダウンロードできます: https://www.google.com/design/spec/resources/roboto-noto-fonts.html

次のようにTypeFaceを使用することにより、従来の方法で実行できます。

Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);

注:上記は、Activityごとに実行する必要があります。

または、たとえば、RobotoフォントをすべてのTextView'sアプリケーション内で、TextViewを拡張する独自のウィジェットを作成する必要があります。

これを行う簡単な方法があります。 SOに関するこの回答の手順に従ってください: https://stackoverflow.com/a/9199258/450534leocadiotine 解決策のために。私は前にそれを使用したことがあり、それは魅力のように機能します

編集:your_namespaceマーカーとして、選択した名前を付けることができます。たとえば、AdmobをXMLに統合する場合、xmlns:ads。たとえば、次を使用できます。xmlns:fontまたは説明的なもの。

custom.ttfの意味については、Assetsフォルダーにコピーする必要があるのは、基本的に拡張子のあるフォントファイルです。たとえば、ROBOTO-REGULAR.TTFを使用している場合、custom.ttfROBOTO-REGULAR.TTF。この例を使用すると、コード全体は次のようになります。

<your.package.widget.TypefacedTextView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:font="http://schemas.Android.com/apk/res/your.package"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="Custom fonts in XML are easy"
    Android:textColor="#FFF"
    Android:textSize="14dip"
    font:typeface="ROBOTO-REGULAR.TTF" />
64
Siddharth Lele
  1. ダウンロードRobotoフォントZipファイルを解凍します

  2. プロジェクトにassetsフォルダーがまだない場合は作成します。 Android Studioを使用していると仮定すると、これがその方法です。 enter image description here

  3. アセットフォルダーに新しいディレクトリを作成し、fontという名前を付けます。

  4. 解凍したファイルを開き、選択したフォントスタイルをコピーします。フォントフォルダーは次のようになります。

enter image description here

これで、このフォントをアプリのどこでも次のように使用できます。

   Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
  "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
   txtView.setTypeface(roboto);
22

Typerlib を使用すると、これを簡単に行うことができます。

このライブラリは、プロジェクトにフォントリソースを追加する複雑さをラップし、アプリのパフォーマンスを最大化するために最近作成したフォントをリサイクルします。

これをbuild.gradleに追加します

dependencies {
    compile 'com.elmargomez.typer:typerlib:1.0.0'
}

次に、フォントを使用することができます

TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1);
TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2);
TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3);
TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4);

txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR));
txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC));
txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN));
txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD));

Robotoの現在のすべてのフォントが含まれます。

    Font.ROBOTO_MEDIUM
    Font.ROBOTO_REGULAR
    etc.

使用可能なすべてのフォントを表示するには、=(==-==)を押してクラスFontの後にStudio Auto completeを使用しますAndroid Ctrl + space

6
Enzokie
txtView = (TextView) findViewById(R.id.txtView);

Typeface myTypeface = Typeface.createFromAsset(
                          this.getAssets(),
                          "font/Robot.otf");

txtView.setTypeface(myTypeface);
6
Ketan Ahir

Typeface.createFromAsset()関数の使用に関するもう1つのコメント。私がそれに多くの呼び出しをしたとき、それは膨張時間に大きな影響を与えました。この問題を克服するために、次のようなTypefaceのシングルトンインスタンスを作成しました

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }
3
Szabolcs Becze