Кнопки диалогового окна предупреждения темы MaterialComponents - PullRequest
0 голосов
/ 16 октября 2018

Недавно я переключился с библиотеки поддержки на com.google.android.material: material: 1.0.0

Но теперь у меня проблема, на этих страницах есть примечание https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

Примечание. Использование темы «Компоненты материала» позволяет использовать пользовательский инфлятор, который заменяет компоненты по умолчанию их аналогами.В настоящее время это только заменяет компоненты Button XML на MaterialButton.

И тема, которую я использую

Theme.MaterialComponents.Light.NoActionBar

, делает именно то, что говорится в этой заметке, она заменяет кнопки AlertDialog на MaterialButtonsно проблема в том, что по умолчанию кнопки MaterialButton имеют цветной фон, и теперь кнопки выглядят так: enter image description here

Как сделать их снова без полей и без фона?

PS Я использую конструктор оповещений для создания диалогов оповещений:

android.app.AlertDialog.Builder

Ответы [ 5 ]

0 голосов
/ 24 апреля 2019

Если вы не хотите использовать androidx.appcompat.app.AlertDialog, вы можете просто переопределить стиль кнопок диалога:

В вашем style.xml:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
   ...
   <item name="android:buttonBarButtonStyle">@style/DialogButton</item>
   ...
</style>

<style name="DialogButton" parent="Widget.MaterialComponents.Button.TextButton"/>

0 голосов
/ 28 марта 2019

Если вы используете библиотеку com.android.support:design:28.0.0, использование android.support.v7.app.AlertDialog работает как положено.

0 голосов
/ 29 января 2019

Нашел другое решение для этого с использованием MaterialComponents здесь: https://issuetracker.google.com/issues/116861837#comment9

<style name="Theme.Custom.Material.Alert.Dialog.Light" parent="Theme.MaterialComponents.Light.Dialog.Alert">
    <item name="materialButtonStyle">@style/Widget.AppCompat.Button.Borderless</item>
</style>

<style name="Theme.Custom.Material.Base.Light" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="android:dialogTheme">@style/Theme.Custom.Material.Alert.Dialog.Light</item>
    <item name="android:alertDialogTheme">@style/Theme.Custom.Material.Alert.Dialog.Light</item>
  ....
</style>

Хотя это все еще не "предполагаемое поведение" для меня.

0 голосов
/ 18 февраля 2019

При использовании com.google.android.material:material:1.0.0 и androidx.appcompat.app.AlertDialog вы можете настроить каждую кнопку в buttonBar, используя Widget.MaterialComponents.Button.TextButton в качестве родителя.

val builder: AlertDialog.Builder = AlertDialog.Builder(ContextThemeWrapper(context, R.style.AlertDialogTheme))

Использовать макет по умолчанию или добавить пользовательский элемент * builder.setView(R.layout.my_dialog)

В ваших стилях:

<style name="AlertDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert">
    <item name="buttonBarPositiveButtonStyle">@style/Alert.Button.Positive</item>
    <item name="buttonBarNegativeButtonStyle">@style/Alert.Button.Neutral</item>
    <item name="buttonBarNeutralButtonStyle">@style/Alert.Button.Neutral</item>
</style>

<style name="Alert.Button.Positive" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="backgroundTint">@color/transparent</item>
    <item name="rippleColor">@color/colorAccent</item>
    <item name="android:textColor">@color/colorPrimary</item>
    <item name="android:textSize">14sp</item>
    <item name="android:textAllCaps">false</item>
</style>

<style name="Alert.Button.Neutral" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="backgroundTint">@color/transparent</item>
    <item name="rippleColor">@color/colorAccent</item>
    <item name="android:textColor">@color/gray_dark</item>
    <item name="android:textSize">14sp</item>
</style>

Screenshot

0 голосов
/ 16 октября 2018

Я понял, что является причиной этой проблемы.Мне нужно использовать другой класс AlertDialog:

androidx.appcompat.app.AlertDialog

Когда я переключился на это, все начало работать как положено.Вот где я нашел решение:

https://github.com/material-components/material-components-android/issues/162

...