Android - 更改应用程序中所有对话框的对话框标题样式

jai*_*rik 11 android android-theme android-alertdialog

有没有办法可以更改Android应用程序中出现的所有警报对话框?我想要更改系统生成的对话框(例如,当您长按任何EditText时打开的"编辑文本"对话框).我想更改我的应用程序中所有对话框的标题字体颜色和大小.

有办法吗?

我试过设置android:alertDialogTheme我的主题.但似乎没有用.代码如下 -

<style name="Theme.DLight" parent="android:Theme.Light.NoTitleBar">
    <item name="android:alertDialogTheme">@style/DialogStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

<style name="DialogStyle" parent="android:Theme" >    
    <item name="android:windowBackground">@drawable/background_holo_light</item>
    <item name="android:textColor">#014076</item>       
</style>
Run Code Online (Sandbox Code Playgroud)

编辑

我没有从我的代码中调用对话框.它只是您长按任何EditText时出现的默认对话框.通常它包含键盘选项,如选择单词,全选,输入法等.

Dav*_*and 11

在对话框主题中,您需要修改的属性windowTitleStyle.在那里,引用标题的样式并为此标题定义文本外观.例如,要将标题显示为红色和粗体:

<style name="AppTheme" parent="@android:style/Theme.Holo">
    ...  
    <item name="alertDialogTheme">@style/AppTheme.AlertDialog</item>
</style>

<style name="DialogStyle" parent="@style/Theme.Holo.Dialog.Alert">    
    ...
    <item name="android:windowTitleStyle">@style/DialogWindowTitle_Custom</item>
</style>

<style name="DialogWindowTitle_Custom" parent="@style/DialogWindowTitle_Holo">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@style/TextAppearance_DialogWindowTitle</item>
</style>

<style name="TextAppearance_DialogWindowTitle" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
    <item name="android:textColor">@android:color/holo_red_light</item>
    <item name="android:textStyle">bold</item>
</style>
Run Code Online (Sandbox Code Playgroud)

如果你想更多地设置你的AlertDialog,我写了一篇博文,详细介绍了这些步骤.


Pra*_*kar 6

在 styles.xml 中:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
       //All your other styles and add the one mntioned below.

        <item name="alertDialogTheme">@style/AlertDialogStyle</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

在AlertDialog的样式中添加:

 <style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/primary_text</item>
        <item name="android:editTextColor">@color/primary_text</item>
        <item name="android:background">@color/white</item>
        <item name="android:windowTitleStyle">@style/TextAppearance.AppCompat.Title</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

添加windowTitleStyle很重要,因为它会给您的标题带来您需要的效果。

现在,只需在您想要的任何活动中的 AlertDialog 中使用此主题,如下所示:

 AlertDialog.Builder dialog = new AlertDialog.Builder(this, R.style.AlertDialogStyle);
Run Code Online (Sandbox Code Playgroud)