Невозможно отобразить кнопку в диалоговом окне материала

#android #xml #android-layout

#Android #xml #android-макет

Вопрос:

Я использую тему material design в приложении. Я пытаюсь показать диалоговое окно Material Design в приложении, но в диалоговом окне положительные и отрицательные кнопки не отображаются. Ниже приведен мой код:

    new MaterialAlertDialogBuilder(getActivity())
                    .setMessage("Do you want to close this application ?")
                    .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(getApplicationContext,"Hello",Toast.LENGTH_SHORT).show();
                        }
                    }).show();
 

themes.xml

 <resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Caketale" parent="Theme.MaterialComponents.Light">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryVariant">@color/primaryDark</item>
    <item name="colorOnPrimary">@color/white</item>
    <item name="colorSecondary">@color/accent</item>
    <item name="colorSecondaryVariant">@color/accent</item>
    <!-- Secondary brand color. -->
 <!--   <item name="colorSecondary">@color/teal_200</item>   -->
 <!--   <item name="colorSecondaryVariant">@color/teal_700</item>   -->
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->

 </style>

</resources>
 

Как я могу решить эту проблему?

Комментарии:

1. куда вы помещаете новый materialertdialogbuilder()? можете ли вы показать полный код?

2. При нажатии кнопки.

Ответ №1:

Чтобы использовать ее с библиотекой дизайна, используйте этот стиль.

 <style name="AlertDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert">
    <item name="colorPrimary">@color/colorAccent</item>
</style>
 

Затем вы используете его следующим образом.

     AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);
builder.setTitle("AppCompatDialog");
builder.setMessage("Lorem ipsum dolor...");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
 

Комментарии:

1. MaterialAlertDialogBuilder.Builder() отображается красная строка.

2. используйте AlertDialog

3. Не могли бы вы отредактировать сообщение, не используя реализацию lambda.