Android - change dialog title style of all dialogs in application

前端 未结 3 760
花落未央
花落未央 2020-12-10 12:08

Is there a way I can change all the alert dialogs appearing in my Android application? I want to change the dialogs that are system generated as well (like the Edit Text

相关标签:
3条回答
  • 2020-12-10 12:49
    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
        }
    
    }
    

    //RESOURCE STYLE FILE 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>
    

    //AND USE THIS CODE ANYWHERE IN YOUR APPLICATION TO GET CUSTOM PROGRESS DIALOG

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

    Thanks :)

    0 讨论(0)
  • 2020-12-10 12:55

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

    In the styles of AlertDialog add:

     <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 is important to add as it will give your title that effect that you need.

    Now simply use this Theme in your AlertDialog in any activity that you want like below:

     AlertDialog.Builder dialog = new AlertDialog.Builder(this, R.style.AlertDialogStyle);
    
    0 讨论(0)
  • 2020-12-10 13:11

    In you dialog theme, the attribute you need to modify windowTitleStyle. There, reference a style for your title and define a text appearance for this title. For example, to display your title red and bold:

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

    If you want to style a little bit more your AlertDialog, I wrote a blog post detailing the steps.

    0 讨论(0)
提交回复
热议问题