2013-03-07 134 views
11

我想要样式或更改警报对话框中标题标题的分隔线颜色。我搜索这个问题,我想很多人在寻找这个问题,但我仍然无法找到正确的解决方案。我想改变这一点。 Blue header divider如何更改警报对话框标题分隔线颜色android

+0

你试过setDivider方法?它存在于警报对话框中吗? – Paschalis 2013-03-07 12:45:26

+0

你可以设置它.. – Janmejoy 2013-03-07 12:50:19

+0

我为我的旧版android版本创建了服装对话框,但对于较新的android版本,我想更改此蓝色分隔线颜色。对于旧版本,我完全创建了自定义对话框。但我不想为更高版本使用它。所以这是问题。任何方式来改变这一点。 – nilkash 2013-03-07 12:51:34

回答

0

从来源判断,似乎这种颜色是硬编码的。我会认为这是一个错误,它应该是有风格的imho。

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

+2

你在给setStyle应用什么? AlertDialogs没有这种方法(我可以看到)。如果这项工作,我会很高兴地upvote你的答案。 – PeteH 2013-09-13 08:24:43

+1

我在DialogFragment的onCreate中使用它(我建议你使用对话框片段而不是片段:http://stackoverflow.com/questions/13765127/dialogfragment-advantages-over-alertdialog) – Teovald 2013-09-14 20:00:43

15

实际上,你可以通过一个非常简单的黑客改变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(); 
    } 
} 
+1

这是“未来”的安全吗? – loeschg 2014-09-04 20:45:55

+0

最安全的你可以得到我知道 – MatrixDev 2014-09-08 07:22:20

+2

不适用于我测试过的所有Android版本。 – Patrick 2015-02-26 21:00:01

4

分频器颜色: -

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)); 
+1

这里的关键是首先运行'.show()',然后访问对话框以获取分隔符视图并进行更新等。我最初错过了这个 - 试图在显示对话框之前进行颜色更新,并没有工作。简洁的例子 - 谢谢 – gnB 2017-12-12 21:04:02

-1
QustomDialogBuilder qustomDialogBuilder = new QustomDialogBuilder(context). 
     setTitle("Set IP Address"). 
     setTitleColor("#FF00FF"). 
     setDividerColor("#FF00FF"). 
     setMessage("You are now entering the 10th dimension."). 
qustomDialogBuilder.show();