私は1つAndroidプロジェクトを開発しました。このプロジェクトでは、テキストフォントのデフォルトはAndroid:sansです。
次に、プロジェクト全体のデフォルトのテキストフォントをrobotoフォントに置き換えます。
これどうやってするの?
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/450534 ( leocadiotine 解決策のために。私は前にそれを使用したことがあり、それは魅力のように機能します
編集:your_namespace
マーカーとして、選択した名前を付けることができます。たとえば、AdmobをXMLに統合する場合、xmlns:ads
。たとえば、次を使用できます。xmlns:font
または説明的なもの。
custom.ttfの意味については、Assets
フォルダーにコピーする必要があるのは、基本的に拡張子のあるフォントファイルです。たとえば、ROBOTO-REGULAR.TTFを使用している場合、custom.ttfをROBOTO-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" />
ダウンロードRoboto
フォントZipファイルを解凍します
プロジェクトにassets
フォルダーがまだない場合は作成します。 Android Studioを使用していると仮定すると、これがその方法です。
アセットフォルダーに新しいディレクトリを作成し、font
という名前を付けます。
解凍したファイルを開き、選択したフォントスタイルをコピーします。フォントフォルダーは次のようになります。
これで、このフォントをアプリのどこでも次のように使用できます。
Typeface roboto = Typeface.createFromAsset(context.getAssets(),
"font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
txtView.setTypeface(roboto);
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。
txtView = (TextView) findViewById(R.id.txtView);
Typeface myTypeface = Typeface.createFromAsset(
this.getAssets(),
"font/Robot.otf");
txtView.setTypeface(myTypeface);
Typeface.createFromAsset()
関数の使用に関するもう1つのコメント。私がそれに多くの呼び出しをしたとき、それは膨張時間に大きな影響を与えました。この問題を克服するために、次のようなTypeface
のシングルトンインスタンスを作成しました
public static Typeface getTypeFace() {
if (fromAsset == null) {
fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
}
return fromAsset;
}