Android:Afollestad材质对话框动作按钮文字颜色

时间:2019-03-20 07:00:21

标签: android material-design android-button material

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

#include <stdio.h>
#include <stdlib.h>
#define PASS_LEN 2

static char* construct_candidates (char a[], int k, int *count)
{
    /* Lower case ASCII */
    int min1 = 97; 
    int max1 = 122; 

    /* Upper case ASCII */
    int min2 = 65; 
    int max2 = 90; 

    *count = (max1 - min1 + 1) + (max2 - min2 + 1); 
    char *cand = calloc(*count, sizeof(char));
    if (cand == NULL) {
        printf("malloc failed\n");
        return NULL;
    }   
    int idx = 0;
    for (int i = min1; i <= max1; i++) {
        cand[idx] = i;
        idx++;
    }   
    for (int i = min2; i <= max2; i++) {
        cand[idx] = i;
        idx++;
    }   

    return cand;
}

static void backtrack(char a[], int k)
{
    int i;
    if (k == PASS_LEN) {
        for (i = 0; i < PASS_LEN; i++) {
            printf("%c", a[i]);
        }   
        printf("\n");
        return;
    }   

    int cand_count = 0;
    char *cand = construct_candidates(a, k, &cand_count);
    if (cand == NULL) {
        printf("Failed to get candidates\n");
        return;
    }   
    for (i = 0; i < cand_count; i++) {
        a[k] = cand[i];
        backtrack(a, k + 1); 
    }
    free(cand);
}

int main()
{
    char a[PASS_LEN] = {'\0'};
    backtrack(a, 0); 
}

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

好吧,这是您可以在style.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)
}

答案 2 :(得分:1)

默认情况下,来自Activity主题的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>

或在您的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>

希望您得到了答案。快乐编码

答案 3 :(得分:0)

尝试此代码.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