1. ホーム
  2. アンドロイド

[解決済み】Androidアプリ全体のデフォルトフォントファミリーを設定する方法

2022-04-19 06:04:33

質問

私のアプリではRoboto lightフォントを使用しています。フォントを設定するには、アプリに android:fontFamily="sans-serif-light" をすべてのビューに追加してください。Robotoフォントをアプリ全体のデフォルトのフォントファミリとして宣言する方法はありますか?このように試してみましたが、うまくいかないようです。

<style name="AppBaseTheme" parent="android:Theme.Light"></style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

解決方法は?

答えは「イエス」です。

グローバルロボットライト TextViewButton クラスがあります。

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
    <item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>

<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

リストから好きなスタイルを選ぶだけ テーマ.xml その後、オリジナルのスタイルをベースに独自のスタイルを作成します。最後に、そのスタイルをアプリケーションのテーマとして適用します。

<application
    android:theme="@style/AppTheme" >
</application>

Robotoのような内蔵フォントでしか動作しないが、それが問題だった。 カスタムフォント(例えばアセットから読み込む)の場合、この方法は機能しません。

EDIT 08/13/15

AppCompat のテーマを使用している場合は、忘れずに android: の接頭辞があります。例えば

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
    <item name="buttonStyle">@style/RobotoButtonStyle</item>
</style>

注意 buttonStyle を含んでいません。 android: というプレフィックスがありますが textViewStyle を含む必要があります。