15

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

有没有办法做到这一点?

我已经尝试android:alertDialogTheme在我的主题中设置。但它似乎不起作用。代码如下 -

<style name="Theme.DLight" parent="android:Theme.Light.NoTitleBar">
    <item name="android:alertDialogTheme">@style/DialogStyle</item>
</style>

<style name="DialogStyle" parent="android:Theme" >    
    <item name="android:windowBackground">@drawable/background_holo_light</item>
    <item name="android:textColor">#014076</item>       
</style>

编辑

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

4

3 回答 3

20

在您的对话框主题中,您需要修改的属性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>

如果您想为您的 AlertDialog 设置更多样式,我写了一篇博文详细介绍了这些步骤。

于 2014-07-03T17:46:22.647 回答
3

在样式.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>

在 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>

添加windowTitleStyle很重要,因为它将为您的标题提供您需要的效果。

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

 AlertDialog.Builder dialog = new AlertDialog.Builder(this, R.style.AlertDialogStyle);
于 2019-09-04T08:01:01.787 回答
2
import android.app.ProgressDialog;
import android.content.Context;
import android.view.animation.Animation;

public class MyProgressDialog extends ProgressDialog {

    public MyProgressDialog(Context context) {
        super(context,R.style.NewDialog);

        // TODO Auto-generated constructor stub
    }

}

//资源样式文件 res->values->mydialog.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="NewDialog" parent="@android:style/Theme.Dialog">

    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:colorBackground">#ffffff</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:width">30dip</item>
    <item name="android:height">30dip</item>
     <item name="android:textColor">#FF0000</item>

</style>
</resources>

//并在您的应用程序中的任何地方使用此代码以获取自定义进度对话框

MyProgressDialog pd = new MyProgressDialog(YouActivity.this);
pd.setMessage("Loading. Please wait...");
pd.show();

谢谢 :)

于 2012-08-12T12:15:43.940 回答