Android: Цвет текста кнопки действия диалогового окна Afollestad Material

#android #material-design #android-button

#Android #материал-дизайн #android-кнопка

Вопрос:

Я использую библиотеку под названием material-dialogs от afollestad. Мне нужно изменить цвет текста положительного и отрицательного действия кнопки.

 MaterialDialog(this).show {
            positiveButton("yes") {
                clearData()
                goToLoginPage()
            }
            negativeButton("cancel") { dismiss() }
            message("Some message")
        }
  

Приведенный выше код для отображения диалогового окна материала. Для аргументов кнопки может быть указано только название кнопки. Мое требование — изменить «да» на зеленый цвет текста и «отмена» на красный цвет текста. Возможно ли этого добиться с помощью этой библиотеки?

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

1. Проверьте эту ссылку

2. Да, я сделал. Они предоставили опцию цвета текста для заголовка и сообщения, но не для положительного текста кнопки и отрицательного текста кнопки. Поэтому мне нужен какой-то способ достичь этого.

3. Хорошо, можете ли вы показать мне код только создаваемого вами диалогового окна, я проверю и расскажу, как вы можете изменить. Опубликуйте код создания диалогового окна в своих вопросах.

4. Теперь я опубликовал код в своем вопросе.

5. Проверьте мой ответ на решение.

Ответ №1:

Хорошо, вот три строки, которые вы можете переопределить в вашем приложении, тема внутри styles.xml чтобы придать ему свои собственные цвета.

Чтобы изменить цвет заголовка диалогового окна

 <item name="md_color_title">@color/yourTitleColor</item>
  

Чтобы изменить цвет содержимого диалогового окна

 <item name="md_color_content">@color/yourContentColor</item>
  

Чтобы изменить цвета положительных и отрицательных кнопок диалогового окна

 <item name="md_color_button_text">@color/yourPositiveNegativeColor</item>
  

Чтобы изменить цвет фона диалогового окна

 <item name="md_background_color">@color/yourDialogBgColor</item>
  

Чтобы изменить цвет разделителя диалогового окна

 <item name="md_divider_color">@color/yourDialogDividerColor</item>
  

Редактировать:

Поскольку OP сказал, что он хочет придать разные цвета положительным и отрицательным кнопкам, в библиотеке, похоже, нет решения, но мы можем использовать обходной путь, приведенный ниже. Используя java-метод Html.откуда мы можем установить наш собственный цвет для текста каждой кнопки.

 val yesText = "<font color='#1B1ED8'>Yes</font>"
val cancelText = "<font color='#44D81B'>Cancel</font>"

MaterialDialog(this).show {
    positiveButton(text = Html.fromHtml(yesText))
    negativeButton(text = Html.fromHtml(cancelText))
    message(R.string.Some_message)
}
  

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

1. md_color_button_text изменяет цвет для текста кнопки. Нужен другой цвет текста кнопки для положительного и отрицательного.

2. Смотрите приведенную выше правку в ответе

Ответ №2:

всегда читайте документы, прежде чем отправлять вопрос!

проверьте эту ссылку для определения тематики и цветов текста в диалоговом окне: материал-диалог> документы > Цвет текста

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

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

2. извините за поздний ответ, но документы о цвете текста не требуют пояснений, так как md_color_title обозначают цвет текста заголовка , md_color_title обозначают цвет содержимого / основного текста и md_color_button_text обозначают цвет текста кнопок . я надеюсь, что они помогут вам. 🙂

3. прочитайте документы. применил цвет в стилях. по-прежнему не работает.

Ответ №3:

попробуйте этот код, .positiveColor () и .negativeColor () и измените его на версию gradle в вашем проекте

  // Material Dialogs
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
  

Смотрите полный пример и загружайте исходный код, когда u возьмет.

https://github.com/afollestad/material-dialogs/blob/master/documentation/CORE.md#text-color

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

1. Для этого он должен понизить версию, где kotlin не поддерживается, и он должен перейти с Androidx на android и решить проблему между слиянием манифестов.

2. Нет поддерживаемого Kotlin, измените путь к этому классу ‘com.android.tools.build: gradle: 3.1.4’

Ответ №4:

По умолчанию для цветов заголовка и содержимого диалогового окна материалов используются атрибуты android: textColorPrimary и android: textColorSecondary из темы вашего действия. colorPrimary используется для цвета текста кнопок действий по умолчанию. Если вы хотите переопределить их, предоставляются соответствующие атрибуты. Используйте этот пользовательский стиль в своем диалоговом окне.

 <style name="AppTheme.Custom" parent="Theme.AppCompat">

  <item name="md_color_title">@color/your_color</item>
  <item name="md_color_content">@color/your_color</item>
  <item name="md_color_button_text">@color/your/color</item>

</style>
  

или используйте приведенный ниже код для своей темы приложения.

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

    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>

    <item name="android:textViewStyle">@style/InterTextViewStyle</item>
    <item name="android:buttonStyle">@style/InterButtonStyle</item>

    <item name="md_color_button_text">@color/colorAccent</item>
</style>
  

Надеюсь, вы получили ответ. Удачного кодирования

Ответ №5:

Это простое решение в два этапа, и оно работает для меня

Шаг 1)
В стиле

 <style name="AppThemeMD" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="md_color_button_text">@color/YOUR_COLOR_HERE</item>
</style>
  

Шаг 2) В вашей деятельности или фрагменте

 MaterialDialog(this@SplashActivity).show {
                    setTheme(R.style.AppThemeMD)
                    icon(R.mipmap.ic_launcher)
                     title(null, AppConstants.APP_NAME)
                
                        positiveButton(R.string.YOUR_STRING_HERE) {
                     
                    }
                }