如何更改警报对话框标题分隔线颜色android

Posted

技术标签:

【中文标题】如何更改警报对话框标题分隔线颜色android【英文标题】:How to change alert dialog header divider color android 【发布时间】:2013-02-22 16:04:18 【问题描述】:

我想在警报对话框中设置样式或更改标题标题的分隔线颜色。我搜索了这个问题,我想很多人都在搜索这个问题。但我仍然无法找到正确的解决方案。我想更改以下内容。

【问题讨论】:

你试过setDivider方法吗?它是否存在于警报对话框中? 我为旧的 android 版本创建了服装对话框,但对于较新的 android 版本,我想更改这个蓝色分隔线颜色。对于旧版本,我完全创建了我的自定义对话框。但我不想将它用于更高版本。所以这是个问题。任何改变它的方法。 如果是这样,您不想创建自定义对话框,那么您可能必须更改主题,否则您必须使用自定义对话框.. 我也厌倦了它们,看到我改变了标题标题的颜色。但我无法更改分隔线颜色。而且我真的不想为我的更高版本的 android 使用自定义警报对话框。 这可能对您有所帮助:- ***.com/questions/14439538/… 【参考方案1】:

您实际上可以通过一个非常简单的 hack 来更改 AlertDialog 标题的颜色:

public static void brandAlertDialog(AlertDialog dialog) 
    try 
        Resources resources = dialog.getContext().getResources();
        int color = resources.getColor(...); // your color here

        int alertTitleId = resources.getIdentifier("alertTitle", "id", "android");
        TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId);
        alertTitle.setTextColor(color); // change title text color

        int titleDividerId = resources.getIdentifier("titleDivider", "id", "android");
        View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId);
        titleDivider.setBackgroundColor(color); // change divider color
     catch (Exception ex) 
        ex.printStackTrace();
    

【讨论】:

这个“未来”安全吗? 我知道的最安全的 @Patrick 能否请您提及它在哪些 Android 版本上不起作用,例如17+ 等低于 15,因此无需检查不同版本即可帮助其他人【参考方案2】:

分隔线颜色:-

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dialog)
   .setIcon(R.drawable.ic)
   .setMessage(R.string.dialog_msg);
Dialog d = builder.show();
int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = d.findViewById(dividerId);
divider.setBackgroundColor(getResources().getColor(R.color.my_color));

【讨论】:

这里的关键是先运行.show(),然后访问对话框以获取分隔线视图并进行更新等。我一开始错过了 - 之前试图对其进行颜色更新显示对话框,但没有工作。简洁的例子 - 谢谢【参考方案3】:

从来源来看,这种颜色似乎是硬编码的。我会认为这是一个错误,它应该是风格化的恕我直言。

不过有一个简单的解决方法:使用setStyle(DialogFragment.STYLE_NO_TITLE, R.style.myStyle);,并编写一个简单的线性布局,其中第一项是您的标题。

【讨论】:

你将 setStyle 应用于什么? AlertDialogs 没有这样的方法(我可以看到)。如果这可行,我很乐意支持您的回答。 我在 DialogFragment 的 onCreate 中使用它(我建议你使用对话框片段而不是片段:***.com/questions/13765127/…)【参考方案4】:
QustomDialogBuilder qustomDialogBuilder = new QustomDialogBuilder(context).
        setTitle("Set IP Address").
        setTitleColor("#FF00FF").
        setDividerColor("#FF00FF").
        setMessage("You are now entering the 10th dimension.").
qustomDialogBuilder.show();

【讨论】:

以上是关于如何更改警报对话框标题分隔线颜色android的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中更改警报对话框的文本行

使用警报对话框android的颜色ListView项目

如何更改 Android ListView 分隔线的颜色?

Android:如何更改日期选择器分隔线的颜色?

如何在android中为警报对话框设置自定义字体?

如何在 iOS 中更改 UIAlertView 对话框的颜色?