如何更改DialogFragment标题背景颜色和底线颜色

时间:2014-08-27 23:42:37

标签: android android-alertdialog android-theme

我正在尝试自定义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

2 个答案:

答案 0 :(得分:5)

您可以在创建对话框后找到分隔符:

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(第5部分),解释你如何能够主题化所有内容。

答案 1 :(得分:3)

如果默认对话框不能满足您的需求,您最好提供自己的自定义布局。然后,您可以在XML中使其完全符合您的要求 这在文档中有很好的解释(参见Creating a Custom Layout