Использование кнопок, обрисованных в общих чертах из последних материалов, с помощью alerttdialog

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

Я создал стиль в style.xml, как показано ниже.

<style name="OutlinedButton" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="strokeColor">@color/colorAccent</item>
    <item name="strokeWidth">2dp</item>
</style>

<style name="MaterialDialogStyle" parent="Theme.MaterialComponents.Dialog.Alert">
    <item name="android:textColorPrimary">@color/colorAccent</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorPrimary">@color/colorAccent</item>
    <item name="buttonStyle">@style/OutlinedButton</item>
</style>

Я использую новую тему «Компоненты материала» для стилизации кнопок «Да» и «Нет».

Теперь я использую вышеуказанный стиль в своем коде, установив его в AlertDialog builder.

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

Но результат выглядит следующим образом:  введите описание изображения здесь

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


comment
Дубликат? : stackoverflow.com/questions/52829954/   -  person ʍѳђઽ૯ท    schedule 22.11.2018
comment
@Mohsen: в этом вопросе пользователь использует androidx, я использую компоненты материалов из библиотеки поддержки дизайна, будет ли он по-прежнему похож?   -  person karan    schedule 22.11.2018
comment
Переключитесь на AndroidX, затем импортируйте импорт androidX. После этого добавьте зависимость материального дизайна, чтобы увидеть результат. Я думаю, это будет работать лучше с новым AndroidX и добавленной зависимостью Material Design.   -  person ʍѳђઽ૯ท    schedule 22.11.2018
comment
Есть ли какие-то особые требования к переключению, потому что материальные компоненты также доступны с библиотекой поддержки.   -  person karan    schedule 22.11.2018
comment
Я предполагаю, что текущий импорт вызывает проблему, поскольку и материальные компоненты, и вспомогательная библиотека различаются. В любом случае, вы правы насчет второй части, (are available with support library) Почему бы не проверить и v7 AlertDialog импорт? или просто, используя импорт зависимостей AndroidX?   -  person ʍѳђઽ૯ท    schedule 22.11.2018


Ответы (1)


Поскольку вы используете тему материала, вы можете использовать:

      new MaterialAlertDialogBuilder(MainActivity.this, R.style.MyMaterialAlertDialog)
          .setTitle("Clear cart")
          .setMessage("Pressing back...")
          .setPositiveButton("YES", null)
          .setNegativeButton("NO", /* listener = */ null)
          .show();

А затем определите стиль:

  <style name="MyMaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
    <item name="buttonBarPositiveButtonStyle">@style/OutlinedButton</item>
    <item name="buttonBarNegativeButtonStyle">@style/OutlinedButton</item>
  </style>

  <style name="OutlinedButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
    <item name="strokeColor">@color/colorAccent</item>
    <item name="strokeWidth">2dp</item>
  </style>

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

person Gabriele Mariotti    schedule 21.09.2019