简体   繁体   English

如何通过样式将自定义字体样式/系列应用于整个应用程序中的警报对话框

[英]How to apply custom font style/ family to alert dialogs in entire app through styles

I want to change the font face of alert dialog in entire app. 我想在整个应用程序中更改警报对话框的字体。 How to achieve it through XML(styles). 如何通过XML(样式)实现它。 Please help me with some solution .Thank You 请帮我一些解决方案。谢谢

You need to add Calligraphy in build.gradle , Please refer Calligraphy for more detail. 您需要在build.gradle中添加书法,有关更多详细信息,请参考书法

dependencies {
    compile 'uk.co.chrisjenx:calligraphy:2.3.0'
}

Use below code in your Application file: 在您的应用程序文件中使用以下代码:

CalligraphyConfig.initDefault(CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/roboto_bold.ttf")
            .setFontAttrId(R.attr.fontPath)
            .build()

Create single instance of dialog using below code or where ever you are creating new dialog. 使用以下代码或在创建新对话框的任何位置创建对话框的单个实例。

progressDialog = ProgressDialog(ContextThemeWrapper(context, R.style.AlertProgressDialogCustom))

Put below style in style.xml style.xml中放在样式下方

<style name="DialogTextButton" parent="@android:style/TextAppearance.Holo.Medium">
    <item name="fontPath">fonts/open_sans.ttf</item>
    <item name="android:textColor">@color/black</item>
</style>

<style name="AlertProgressDialogCustom" parent="@android:style/Theme.Material.Light.Dialog">
    <item name="android:textAppearanceMedium">@style/DialogTextButton</item>
    <item name="android:subtitleTextAppearance">@style/DialogTextButton</item>
    <item name="android:titleTextAppearance">@style/DialogTextButton</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:textColorPrimary">@color/black</item>
    <item name="android:colorAccent">@color/btn_picker_color</item>
    <item name="android:progressTint">@color/btn_picker_color</item>
    <item name="android:textAppearance">@style/DialogTextButton</item>
</style>

Let me know if you are still facing issue. 让我知道您是否仍然面临问题。

Follow the below method, 请按照以下方法,

 public void createDialog()
    {
            Dialog dialog = new Dialog(context);            
            dialog.setContentView(R.layout.your_dialog);

            final FontChangeCrawler fontChanger = new FontChangeCrawler(context.getAssets(), Constant.arialRoundedFont);
            fontChanger.replaceFonts((ViewGroup) dialog.findViewById(android.R.id.content));

            dialog.setCancelable(false);
            dialog.show();
    }

->apply this method for all your dialogs by creating this method in your Util class and use it globally. ->在您的Util类中创建此方法并将其全局使用,即可对所有对话框应用此方法。 this will work for you. 这将为您工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM