2014-08-27 240 views
1

我想自定义一些DialogFragment的样式。如何更改DialogFragment标题背景颜色和底线颜色

我已经改变了标题的颜色搭配:

TextView title = (TextView)getDialog().findViewById(android.R.id.title); 
title.setTextColor(getResources().getColor(R.color.base_app_color)); 

现在我需要做的是改变头和底线颜色的背景色为好。

有谁知道哪些是android.R.id。???或者我可以如何归档它?

enter image description here

+0

也许你可以使用这个主题? – Gumbo 2014-08-27 23:44:44

+0

你可能是对的,但我不知道哪些是这些项目的名称,是吗?另外,我可以使用不同的布局,但如果可以改变这些颜色,我很感兴趣。谢谢你@Gumbo – Proverbio 2014-08-27 23:49:33

+0

我(也许)找到了分隔符的ID:'android.R.id.titleDivider'让我知道它是否有效。 – Gumbo 2014-08-27 23:54:16

回答

4

实际上,你可以找到分隔已创建对话框后:

AlertDialog dialog = builder.show(); 

// Set title divider color 
int titleDividerId = getResources().getIdentifier("titleDivider", "id", "android"); 
View titleDivider = dialog.findViewById(titleDividerId); 
if (titleDivider != null) 
    titleDivider.setBackgroundColor(getResources().getColor(android.R.color.holo_purple)); 

自定义标题的背景是稍微复杂...你需要在你的主题中定义一个alertDialogStyle定义你如何绘制对话框的每个区域。例如:

<style name="Theme.Yours" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="android:alertDialogStyle">@style/AlertDialog_Yours</item> 
</style> 

<style name="AlertDialog_Yours"> 
    <item name="android:fullDark">...</item> 
    <item name="android:topDark">...</item> 
    <item name="android:centerDark">...</item> 
    <item name="android:bottomDark">...</item> 
    <item name="android:fullBright">...</item> 
    <item name="android:topBright">...</item> 
    <item name="android:centerBright">...</item> 
    <item name="android:bottomBright">...</item> 
    <item name="android:bottomMedium">...</item> 
    <item name="android:centerMedium">...</item> 
</style> 

这些领域可以是颜色或图形内容,并了解它们是什么,我重定向你a blog post I wrote on the subject(第五部分),解释你怎么能主题的一切。

+0

谢谢。这就是我在寻找@Dadou – Proverbio 2014-09-04 22:13:23

3

如果默认对话框不能满足你的需求,你是最好的关闭提供自己的自定义布局。然后,您可以使它看起来完全符合您的XML要求。
这是在文档很好地解释(见Creating a Custom Layout