Android AlertDialog с закругленными углами

Я пытался сделать свой диалог предупреждений с закругленными углами, но почему-то не могу. Я пытался и потерпел неудачу. Я попытался подписаться на этот блог http://blog.stylingandroid.com/archives/271 и сделал мои стили основаны на этом.

Кстати, добавлю к моему вопросу. Немного моей новой находки. Код в приведенной выше ссылке отлично работает на 2.3.3 (ГБ), но совсем не работает в ICS. Некоторые изменения привели к поломке кода.

Я не хочу создавать 9 изображений патчей, поэтому использую фигуры. Изображение с 9 исправлениями - это последнее, что я попробую. Я знаю, что стиль диалогового окна предупреждения Android использует изображение с 9 исправлениями. Я уже посмотрел это, прежде чем задавать этот вопрос.

/res/values/themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="MyTheme" parent="@android:style/Theme.Dialog">
        <item name="android:alertDialogStyle">@style/dialog</item>
    </style>


</resources>

/res/values/styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="AppTheme" parent="android:Theme.Light" />

    <style name="myImageView">

        <!-- 3dp so the background border to be visible -->
        <item name="android:padding">3dp</item>
        <item name="android:background">@drawable/image_drawable</item>
        <item name="android:scaleType">fitCenter</item>
    </style>

    <style name="dialog">
        <item name="android:fullDark">@drawable/dialog_body</item>
        <item name="android:topDark">@drawable/dialog_title</item>
        <item name="android:centerDark">@drawable/dialog_body</item>
        <item name="android:bottomDark">@drawable/dialog_footer</item>
        <item name="android:fullBright">@drawable/dialog_body</item>
        <item name="android:centerBright">@drawable/dialog_body</item>
        <item name="android:topBright">@drawable/dialog_title</item>
        <item name="android:bottomBright">@drawable/dialog_footer</item>
        <item name="android:bottomMedium">@drawable/dialog_footer</item>
        <item name="android:centerMedium">@drawable/dialog_body</item>
    </style>

</resources>

/res/drawable/dialog_title.xml

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-1dp">
    <shape android:shape="rectangle">
        <solid android:color="#FFFFFF" />
        <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" />
        <stroke android:color="#FFFFFF" android:width="1dp" />
    </shape>
</inset>

/res/drawable/dialog_body.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFFFF" android:endColor="#FFFFFFFF"
        android:angle="270" />
</shape>

/res/drawable/dialog_footer.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#FFFFFF" />

    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp" />

    <stroke
        android:width="1dp"
        android:color="#FFFFFF" />

</shape>

res/layout/dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="45dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="90dp"
        android:layout_toLeftOf="@+id/textView1"
        android:background="@drawable/button_selector"
        android:text="Ok"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/button1"
        android:layout_marginRight="48dp"
        android:background="@drawable/button_selector"
        android:text="More"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1"
        android:layout_marginTop="41dp"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>

Мой код для AlertDialog:

public static void createYesNoDialog(final Context context, String positivebuttonname,
            String negativebuttonname, String message, int messagedrawable, String headermessage,
            final DialogResponse dr) {
        final DialogResponse dialogResponse = dr;
        ContextThemeWrapper ctw = new ContextThemeWrapper(context,
                com.gp4ever.worldlogo.quiz.R.style.MyTheme);

        AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
        LayoutInflater inflater = (LayoutInflater)context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(com.gp4ever.worldlogo.quiz.R.layout.dialog_layout, null);
        TextView text = (TextView)layout.findViewById(com.gp4ever.worldlogo.quiz.R.id.textView1);
        Button buttonOk = (Button)layout.findViewById(com.gp4ever.worldlogo.quiz.R.id.button1);
        Button buttonMore = (Button)layout.findViewById(com.gp4ever.worldlogo.quiz.R.id.button2);
        text.setText(message);
        if (messagedrawable > 0) {
            text.setCompoundDrawablesWithIntrinsicBounds(messagedrawable, 0, 0, 0);
        } else if (messagedrawable == 0)
            text.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
        builder.setView(layout);
        builder.setCancelable(false);
        builder.setTitle(headermessage);
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        final AlertDialog dialog = builder.create();

        buttonOk.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });
        buttonMore.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });

}

Мой текущий результат:

У меня не получается скруглить углы. Я вижу, что он отличается от обычного стиля. Несмотря на то, что я меняю радиус на моем чертеже, углы не отражаются на этих изменениях.

введите здесь описание изображения


person VendettaDroid    schedule 19.09.2012    source источник
comment
Разве вы не можете использовать изображение с 9 патчами в качестве фона с закругленными углами?   -  person IAmGroot    schedule 22.09.2012
comment
Нет, я хочу не создавать 9 изображений патчей и вместо этого использовать фигуры. 9 патч изображения последнее, что я буду пробовать. Позвольте мне уточнить это и в моем вопросе.   -  person VendettaDroid    schedule 22.09.2012
comment
Я знаю, что стиль диалогового окна оповещения Android использует изображение с 9 патчами. Я уже посмотрел это, прежде чем задавать этот вопрос.   -  person VendettaDroid    schedule 22.09.2012


Ответы (7)


Вы можете сделать это, используя следующий код:

CustomDialog.java:

public class MainActivity extends Activity{

    private static final int ALERT_DIALOG = 1;

    @Override
    public void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.main );

        ( (Button) findViewById( R.id.button1 ) )
            .setOnClickListener( new OnClickListener()
                {
                    public void onClick( View v )
                    {
                        showDialog( ALERT_DIALOG );
                    }
                }
            );
    }

    @Override
    protected Dialog onCreateDialog( int id ){
        Dialog dialog = null;
        if ( id == ALERT_DIALOG )
        {
            ContextThemeWrapper ctw = new ContextThemeWrapper( this, R.style.MyTheme );
            AlertDialog.Builder builder = new AlertDialog.Builder( ctw );
            builder.setMessage( "Hello World" )
                .setTitle( "Alert Dialog" )
                .setIcon( android.R.drawable.ic_dialog_alert )
                .setCancelable( false )
                .setPositiveButton( "Close", new DialogInterface.OnClickListener()
                    {
                        public void onClick( DialogInterface dialog, int which )
                           {
                                dialog.dismiss();
                           }
                        } 
                    );
            dialog = builder.create();
        }
        if ( dialog == null )
        {
            dialog = super.onCreateDialog( id );
        }
        return dialog;
     }
 }

диалог_название.xml

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetBottom="-1dp">
    <shape android:shape="rectangle">
        <solid android:color="#000000" />
        <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" />
        <stroke android:color="#7F7F7F" android:width="1dp" />
    </shape>
</inset>

dialog_footer.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#7F7F7F" />
    <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp" />
    <stroke android:color="#7F7F7F" android:width="1dp" />
</shape>

Просто измените величину радиуса в:

dialog_title.xml

и

dialog_footer.xml

и это приведет к следующему выводу:

введите здесь описание изображения

Надеюсь, что это поможет вам.


ОБНОВЛЕНИЕ:
Я не эксперт, но вот что я нашел. Это может быть правильно или неправильно. После многих попыток я пришел к следующему:

1- ContextThemeWrapper неприменим для API 14, он отлично работает на Gingerbread и более ранних версиях, но с API > 10 не работает.

2- чтобы преодолеть вышеуказанную проблему и заставить ее работать с API> 10 в соответствии с запросом, я заменяю эту строку:

ContextThemeWrapper ctw = new ContextThemeWrapper( this, R.style.MyTheme );
AlertDialog.Builder builder= new AlertDialog.Builder( ctw );

с этим:

AlertDialog.Builder builder= new AlertDialog.Builder( this,R.style.MyTheme );

но вам нужно изменить:

android:minSdkVersion="8"  

to

android:minSdkVersion="11" 

результат будет таким, как показано на следующем изображении в ICS (API 14):

введите здесь описание изображения

Это изображение с Samsung Galaxy S3, работающего под управлением ICS.

Примечание. Модифицированный проект, инициированный с помощью API 14 SO manifest sdk, будет:

<uses-sdk
  android:minSdkVersion="11"
  android:targetSdkVersion="15" />

ЗАКЛЮЧИТЕЛЬНОЕ СЛОВО: мои небольшие познания в разработке Android (я не эксперт),

1- диалоговое окно настраиваемого оповещения работает гладко в API ‹ 10, но не > 10 с тем же кодом Java,

если мы хотим, чтобы он работал в ICS с тем же эффектом, что и в API ‹ 10, нам нужно изменить код, чтобы он работал в ICS, но не работал ни в одной из версий API 11.

2- даже результат в ICS неудовлетворителен, скругленный угол относится только к заголовку, но не к футеру.


ВТОРОЕ ОБНОВЛЕНИЕ: НАКОНЕЦ-ТО я разобрался со всеми углами,

ПРОСТО примените padding к dialog_footer.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
    <solid android:color="#7F7F7F" />
    <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp" />
    <stroke android:color="#7F7F7F" android:width="1dp" />
    <padding android:left="10dp" android:top="10dp" android:right="10dp"
android:bottom="10dp" /> 
</shape>

Выходное изображение:

введите здесь описание изображения

Это изображение с Samsung Galaxy S3 с ICS.

person androidqq6    schedule 23.09.2012
comment
Я знаю, что могу сделать это с помощью диалога, но я хотел бы сделать это с помощью AlertDialog. Я пытаюсь создать диалоговое окно с моей темой. Я не хочу никакой другой настройки. Я просто хочу закругленные углы. Если вы посмотрите на ссылку в блоге, которую я разместил, этот код когда-то работал, но сейчас он не работает. Я не знаю, что с ним не так сейчас. - person VendettaDroid; 24.09.2012
comment
@VendettaDroid я попробовал пример кода по ссылке выше и запустил его на своем мобильном телефоне, его угол уже закруглен. - person androidqq6; 24.09.2012
comment
@VendettaDroid я применил твою тему, я тоже понял - person androidqq6; 24.09.2012
comment
Можете ли вы попробовать изменить округлость и посмотреть, меняется ли она. Я вообще не вижу, чтобы это менялось. - person VendettaDroid; 24.09.2012
comment
Я уже знаю, что мне нужно изменить радиус в моих нарисованных фигурах, чтобы получить большую округлость. Я уже пытался изменить этот радиус. Это не сработало для меня. - person VendettaDroid; 24.09.2012
comment
Кстати, чтобы добавить к моему вопросу сейчас. Немного моей новой находки. Код в ссылке просто отлично работает на 2.3.3 (ГБ), но совсем не работает в ICS. Некоторые изменения привели к поломке кода. - person VendettaDroid; 24.09.2012
comment
Я пробую точно такой же код, как указано в ссылке, и просто изменил радиус на 15dp. Код работает хорошо, если я работаю на устройстве 2.3.3 (ГБ), но не работает на ICS. Вы пытались запустить код на ICS? - person VendettaDroid; 24.09.2012
comment
@VendettaDroid сейчас я снаружи, когда доберусь до дома, я запущу его на устройстве ICS и воспроизведу тебя. - person androidqq6; 24.09.2012
comment
Без вопросов. Спасибо за ваше время. - person VendettaDroid; 24.09.2012
comment
@VendettaDroid, я тестировал его на устройстве ICS, он не только не показывал круглый угол, но и не применял всю тему, я работаю над этой проблемой, о любых результатах я вам сообщу. - person androidqq6; 25.09.2012
comment
Да я в курсе, что не применил всю тему. Спасибо, я тоже над этим работаю. Давайте посмотрим, что не так. - person VendettaDroid; 25.09.2012
comment
Спасибо за наводки. Я попробую и дам вам знать, но я думаю, что вы заслуживаете награды. - person VendettaDroid; 30.09.2012
comment
@VendettaDroid БОЛЬШОЕ СПАСИБО, МОЙ ДРУГ, я все еще работаю над этим, пожалуйста, если вы дойдете до полного решения, пожалуйста, скажите мне, также, если я найду какое-либо решение, я скажу вам, не забудьте добавить стиль и тему в папку (values-v14), спасибо - person androidqq6; 30.09.2012
comment
Спасибо. Я буду держать вас в курсе. - person VendettaDroid; 30.09.2012
comment
Круто, так что это работает, как ожидалось. Спасибо, что потратили на это свое драгоценное время. Я очень, очень ценю это. - person VendettaDroid; 30.09.2012
comment
@VendettaDroid ВАС ВСЕГДА ДОБРО ПОЖАЛОВАТЬ. - person androidqq6; 30.09.2012

Всего один шаг от ответа @iDroid Explorer

добавьте эту строку при построении диалога

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

и это приведет к тому, что прямоугольник исчезнет (который на самом деле прозрачен) и получит идеальное закругленное диалоговое окно.

person Youtoo    schedule 23.01.2014
comment
Хороший! Немного отредактируйте из-за синтаксической ошибки: dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); - person VAdaihiep; 29.04.2014
comment
Просто установите фон диалогового окна на закругленный рисунок, а не на представление, и вам не нужны два вызова. - person enl8enmentnow; 14.01.2015

Просто используйте MaterialAlertDialogBuilder включен в официальную библиотеку компонентов материалов.

new MaterialAlertDialogBuilder(MainActivity.this,R.style.MyThemeOverlay_MaterialComponents_MaterialAlertDialog)
            .setTitle("Dialog")
            .setMessage("Lorem ipsum dolor ....")
            .setPositiveButton("Ok", /* listener = */ null)
            .setNegativeButton("Cancel", /* listener = */ null)
            .show();

Затем определите стиль с помощью атрибута shapeAppearanceOverlay.

 <style name="MyThemeOverlay.MaterialComponents.MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
    <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MyApp.Dialog.Rounded</item>
  </style>

  <style name="ShapeAppearanceOverlay.MyApp.Dialog.Rounded" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">8dp</item>
  </style>

введите описание изображения здесь

person Gabriele Mariotti    schedule 08.09.2019
comment
Очень красиво объяснил. Спасибо, сэр. - person Rahul Kushwaha; 25.10.2019
comment
Красивое и простое решение! Однако мне пришлось добавить «‹item name=colorSurface›@color/‹your resource›‹/item›» в MyThemeOverlay.MaterialComponents.MaterialAlertDialog, иначе мое приложение вылетит. - person Danny E.K. van der Kolk; 16.04.2020

Я пробовал ту же проблему с ниже, и это работает для меня. Даже для ICS.

<сильный>1. Сначала я поместил тему в свой AlertDialog.

final Dialog  nag = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
        nag.requestWindowFeature(Window.FEATURE_NO_TITLE);
        nag.setCancelable(true);
        nag.setContentView(R.layout.pop_exit);  
        Button btnNO = (Button)nag.findViewById(R.id.btn_popup_NO);
        Button btnYES = (Button)nag.findViewById(R.id.btn_popup_YES);


        btnNO.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

            nag.cancel();


            }
        });

        btnYES.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                System.exit(0);

            }
        });

        nag.show();

<сильный>2. Затем внедрили пользовательский макет для диалогового окна

pop_exit.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:gravity="center" android:layout_height="fill_parent">

    <!-- <LinearLayout android:orientation="vertical" android:layout_marginLeft="20dp" 
        android:layout_marginRight="20dp" android:background="#95000056" android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> -->

    <LinearLayout android:orientation="vertical"
        android:layout_marginLeft="20dp" android:layout_marginRight="20dp"
        android:background="@drawable/round" android:layout_width="fill_parent"
        android:layout_height="wrap_content">



        <TextView android:text="Exit Application"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" android:textStyle="bold"
            android:textColor="#fff" android:textSize="20dp"
            android:layout_marginTop="5dp" />


        <LinearLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:orientation="horizontal"
            android:layout_marginTop="5dp" android:weightSum="2"
            android:layout_marginLeft="10dp" android:layout_marginRight="10dp"
            android:gravity="center">

            <Button android:text="No" android:layout_weight="1"
                android:gravity="center" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/btn_popup_NO" />

            <Button android:text="Ok" android:layout_weight="1"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:id="@+id/btn_popup_YES" />
        </LinearLayout>


    </LinearLayout>

</LinearLayout>

<сильный>3. Теперь добавьте форму на фон родительского макета pop_exit.xml

round.xml // файл формы

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#99000056" />
    <corners android:radius="35px" />
    <padding android:left="0dp" android:top="0dp" android:right="0dp"
        android:bottom="0dp" />
</shape>

Я просто делаю это. Это будет работать для вас также для ICS.

Надеюсь, это поможет вам. Если нет, то дайте мне знать.

Наслаждайтесь кодированием...

:)

person Shreyash Mahajan    schedule 28.09.2012
comment
Спасибо, что нашли время ответить. Если вы посмотрите на комментарии выше и историю изменений ответа android116. Он ответил почти так же, как вы сказали. Я снова отвечаю вам тем же, что я знаю, что могу скруглить углы таким образом, но я использую AlertDialog.Builder. Код, который я написал, подходит для ГБ, но для ICS он не работает. Я хочу знать причину этого. - person VendettaDroid; 28.09.2012
comment
он работает нормально, но дает прямоугольник со скругленными углами за пределами окна предупреждения. Это означает, что он дает внешний слой как прямоугольник со скругленными углами, а внутренний слой с прямоугольником, пожалуйста, помогите мне. Мне нужен только один слой прямоугольника со скругленными углами - person Satheesh; 11.07.2013

Поскольку вы заявляете, что не хотите использовать изображение с 9 патчами, посмотрите здесь.

https://stackoverflow.com/a/1683195/940834

Принцип точно такой же, за исключением того, что вы назначаете фон макету, в то время как этот пример относится к линейному макету.

person IAmGroot    schedule 21.09.2012
comment
Я пытался это сделать, но затем у меня есть макет диалога с закругленными углами, а затем внешний прямоугольник, который по умолчанию является частью темы диалога в Android. Так что подумайте о закругленном макете внутри прямоугольника, вот что я получаю. - person VendettaDroid; 22.09.2012
comment
Возможно, удалите диалоговое окно предупреждения для пользовательского. - person IAmGroot; 22.09.2012
comment
Это не проблема. Я знаю, что могу сделать это легко, если выберу диалоговую активность и другие параметры. Но я хочу убедиться, что могу изменить стиль AlertDialog так, как хочу. - person VendettaDroid; 22.09.2012

  1. создайте xml в папке с возможностью рисования с помощью dialog_corner.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="@color/main_background"/>
  <corners
    android:topLeftRadius="@dimen/margin_10" 
    android:topRightRadius="@dimen/margin_10"
    android:bottomRightRadius="@dimen/margin_10" 
    android:bottomLeftRadius="@dimen/margin_10" />
</shape>

2. положить в макет

android:background="@drawable/dialog_corner"

3. в вашем java-файле сохраните код ниже

View mView = LayoutInflater.from(mContext).inflate(R.layout.layout_pob,null); 
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
person siddhartha shankar    schedule 11.11.2016

Самый простой способ:

dialog_card.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/white"/>
    <corners android:radius="8dp"/>
</shape>

themes.xml

<!--    ... your other style codes -->

<style name="MyAlertTheme" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowBackground">@drawable/dialog_card</item>
</style>

В ваших действиях

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this, R.style.MyAlertTheme);
alert.setTitle("<Your Title>");
alert.setMessage("<Your Message>");
// ...

Бонус:

Если вы хотите использовать этот AlertDialog везде в своем приложении,
просто добавьте <item name="alertDialogTheme">@style/MyAlertTheme</item> в свой AppTheme.

Таким образом, вам не нужно передавать R.style.MyAlertTheme во втором параметре AlertDialog.BUilder.

themes.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
<!-- here -->
    <item name="alertDialogTheme">@style/MyAlertTheme</item>
</style>
person Shubham Gupta    schedule 07.03.2021
comment
Лучший ответ! - person Edgar Khimich; 09.07.2021