2014-08-27 283 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