我一直在使用名为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);
}
上面是显示材料对话框的代码。对于按钮参数,只能给出按钮的标题。我的要求是将“是”更改为绿色文本颜色,将“取消”更改为红色文本颜色。使用该库是否可以实现?
答案 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