私は1つのAndroidプロジェクトを開発しました。このプロジェクトでは、テキストフォントのデフォルトはandroid:sansです。
プロジェクト全体で、デフォルトのテキストフォントをrobotoフォントに置き換えたいと思います。
これどうやってするの?
Robotoフォントは、 https ://fonts.google.com/specimen/Robotoからダウンロードできます。[2020-01-28更新]
次のように、を使用して従来の方法でそれを行うことができますTypeFace
。
Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);
注:上記はすべてので実行する必要がありますActivity
。
または、たとえば、アプリケーション内のすべてのにRobotoフォントを適用する場合は、TextView
を拡張する独自のウィジェットを作成する必要がありますTextView
。
これを行う簡単な方法があります。SOでこの回答からの手順に従ってください:https ://stackoverflow.com/a/9199258/450534(解決策のためのレオカジオチンへの完全な小道具。私は以前にそれを使用しました、そしてそれは魅力のように機能します)
編集:あなたが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);
txtView = (TextView) findViewById(R.id.txtView);
Typeface myTypeface = Typeface.createFromAsset(
this.getAssets(),
"font/Robot.otf");
txtView.setTypeface(myTypeface);
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の後にAndroid StudioAutocompleteを使用してCtrl+を押しspaceます。
関数の使用法についてもう1つ注意してTypeface.createFromAsset()
ください。私がそれについて多くの電話をしたとき、それは膨張時間に大きな影響を与えました。この問題を克服するために、このTypeface
ようなシングルトンインスタンスを作成しました
public static Typeface getTypeFace() {
if (fromAsset == null) {
fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
}
return fromAsset;
}