Android アプリ全体のデフォルトのフォント ファミリーを設定する方法 質問する

Android アプリ全体のデフォルトのフォント ファミリーを設定する方法 質問する

私はアプリで Roboto ライト フォントを使用しています。フォントを設定するには、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>

ベストアンサー1

答えはイエスです。

グローバルRobotoライト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 のような組み込みフォントでのみ機能しますが、それが問題でした。カスタム フォント (たとえば、アセットから読み込まれたフォント) の場合、この方法は機能しません。

編集 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

おすすめ記事