[解決済み] Androidでアプリケーション全体にカスタムフォントを設定するには?
質問
Androidアプリケーションでカスタムフォントを設定することは可能ですか?
掲載されているものを試してみました。
はこちら
を試してみましたが、私の
extends Application
クラスがどこにあるのかわかりません...
何かお手伝いできることはありますか?
EDITです。
以下を試してみました。
- assetsフォルダを追加し、ここにあるようにフォントを中に挿入します。
-
を継承した新しいクラスを追加します。
Application
-
この新しいクラスを私の
AndroidManifest.xml
. -
自分のスタイルで、追加しました。
MyApp.javaです。
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
FontsOverride.setDefaultFont(this, "DEFAULT", "raleway_regular.ttf");
// This FontsOverride comes from the example I posted above
}
}
AndroidManifest.xmlです。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".MyApp"
android:theme="@style/AppTheme">
....
styles.xmlを参照してください。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:fontFamily">default</item>
</style>
しかし、私のフォントはまだ変更されていません...何かアイデアはありますか?
次に
MyApp
クラスが呼び出されます。しかし、私のフォントには何の影響もありません...。
EDIT2です。 私は、ボタンにカスタムスタイルを設定した後、私のボタンがカスタムフォントを適用することに気づきました。以下は、私のカスタムボタンのスタイルです。
<style name="MyButtonStyle" parent="Widget.AppCompat.Button">
<item name="textAllCaps">false</item>
<item name="android:textAllCaps">false</item>
</style>
そして、今はこんな感じです。
つまり、ボタンにはスタイルが適用されますが
TextView
. なぜカスタムフォントがアプリケーションのすべてのアイテムに適用されないのか、何か思い当たることはありますか?
どのように解決するのですか?
クラスを作成する
public class MyApp extends Application{
// Put the onCreate code as you obtained from the post link you reffered
}
次に、AndroidManifest.xmlのapplicationタグで、アプリケーション・クラスの名前を指定します。この例では、MyAppです。
<application
android:name=".MyApp"
...
>
...
</application>
このため、アプリが開かれるたびに、MyAppクラスのonCreateメソッドが呼び出され、フォントが設定されることになります。
更新 フォントファイルを assets/fonts/your_font_file.ttf の下に置いてください。
アプリケーションクラス(MyApp)のonCreateメソッドの下に、以下の行を記述してください。
TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/your_font_file.ttf");
TypefaceUtilのソースファイル
public class TypefaceUtil {
/**
* Using reflection to override default typeface
* NOTICE: DO NOT FORGET TO SET TYPEFACE FOR APP THEME AS DEFAULT TYPEFACE WHICH WILL BE OVERRIDDEN
*
* @param context to work with assets
* @param defaultFontNameToOverride for example "monospace"
* @param customFontFileNameInAssets file name of the font from assets
*/
public static void overrideFont(Context context, String defaultFontNameToOverride, String customFontFileNameInAssets) {
final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Map<String, Typeface> newMap = new HashMap<String, Typeface>();
newMap.put("serif", customFontTypeface);
try {
final Field staticField = Typeface.class
.getDeclaredField("sSystemFontMap");
staticField.setAccessible(true);
staticField.set(null, newMap);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
try {
final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride);
defaultFontTypefaceField.setAccessible(true);
defaultFontTypefaceField.set(null, customFontTypeface);
} catch (Exception e) {
Log.e(TypefaceUtil.class.getSimpleName(), "Can not set custom font " + customFontFileNameInAssets + " instead of " + defaultFontNameToOverride);
}
}
}
}
ここでstyle.xmlファイルを更新します。
マニフェストファイルに、アクティビティに含まれるスタイルを以下の行に追加します。
<item name="android:typeface">serif</item>
これが役に立つといいのですが
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] Androidアプリのアイコン設定
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] WhatsAppでメッセージを送信する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidでプログラムによるアプリの言語変更
-
[解決済み] なぜAndroid Applicationクラスを拡張するのですか?
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
-
[解決済み] Androidでカスタム書体を使用する
-
[解決済み] Androidです。ランタイムではなく、アプリケーション全体にカスタムフォントを設定したい