【问题标题】:Android: Afollestad Material Dialog action button text colorAndroid:Afollestad Material Dialog 动作按钮文本颜色
【发布时间】:2019-03-20 07:00:21
【问题描述】:

我一直在使用一个名为 material-dialogs by afollestad 的库。我需要更改正负按钮操作的文本颜色。

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

以上是显示材质对话框的代码。对于按钮参数,只能给出按钮的标题。我的要求是将“是”更改为绿色文本颜色,将“取消”更改为红色文本颜色。使用这个库可以实现吗?

【问题讨论】:

  • 查看this link
  • 是的,我做到了。他们为标题和消息提供了文本颜色选项,但没有为正按钮文本和负按钮文本提供文本颜色选项。所以我需要一些方法来实现这一点。
  • 好的,你能告诉我你正在创建的对话框的代码吗?我会检查并告诉你如何改变。在您的问题中发布对话框创建代码。
  • 现在我已经在我的问题中发布了代码。
  • 检查我的答案以获得解决方案。

标签: android material-design android-button


【解决方案1】:

好的,您可以在样式.xml 中的 AppTheme 中覆盖这三行,以赋予您自己的颜色。

更改对话框标题颜色

<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.from 我们可以为每个按钮文本设置自己的颜色。

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

【讨论】:

  • md_color_button_text 更改按钮文本的颜色。正面和负面需要不同的按钮文本颜色。
  • 见上文编辑答案
【解决方案2】:

在发布问题之前务必阅读文档!

查看此链接以获取主题和对话框文本颜色:material-dialog > docs > Text Color

【讨论】:

  • 我确实阅读了文档。他们只为对话框的标题和内容提供了选项。不适用于显示在用户交互对话框底部的正面和负面按钮。
  • 抱歉回复晚了,但 Text Color docs 是不言自明的,md_color_title 代表 title text colormd_color_title 代表内容/正文文本颜色md_color_button_text代表按钮文本颜色。我希望他们能帮助你。 :)
  • 阅读文档。在样式中应用颜色。还是不行。
【解决方案3】:

试试这段代码,.positiveColor() 和 .negativeColor() 并在你的项目中更改为 gradle 版本

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

查看完整示例并下载源代码,当你需要时。

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

【讨论】:

  • 为此,他必须降级到不支持 kotlin 的版本,并且必须从 Androidx 更改为 android 并处理清单合并之间的问题。
  • 不支持 Kotlin,改成这个类路径 'com.android.tools.build:gradle:3.1.4'
【解决方案4】:

默认情况下,Activity 主题中的 android:textColorPrimary 和 android:textColorSecondary 属性用于 Material Dialog 的标题和内容颜色。 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>

或在您的 AppTheme 中使用以下代码。

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

希望你能得到答案。快乐编码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多