2010-03-06 186 views
17

我正在創建一個派生自Dialog的類。對話框的標題欄看起來非常好,它是一種深灰色,有點透明。有沒有辦法設置用於標題欄背景的顏色?灰色很酷,但我想將它設置爲一些自定義顏色。我不認爲這是可能的,我想我需要提供我自己的可伸縮背景對話框資源。是對的嗎?爲對話框標題欄設置背景顏色?

感謝

+0

這一個對你有用:http://stackoverflow.com/a/15285514/1318946 – 2013-09-25 06:07:15

+0

@PratikButani。我認爲他要求的背景..不是標題的文本顏色.. – Abhi 2016-03-24 10:14:43

回答

1

您可以使用:

this.getWindow().setBackgroundDrawableResource(R.color.blue); 

,將設置整個窗口的顏色,包括標題欄。

然後,您可以更改對話框佈局的背景顏色,除了標題欄之外的任何對象,標題欄都將保持藍色。

+1

不幸的是,這個答案不會工作,它不會影響對話框。我嘗試了幾種改變標題欄背景的方法,但都沒有成功。任何其他建議。 – 2011-03-06 14:26:32

+0

這使應用程序崩潰 – Pam 2014-04-17 18:50:06

13

使用下面的代碼:

final Dialog mailDialog = new Dialog(MainActivity.this); 
mailDialog.getWindow().setBackgroundDrawableResource(R.drawable.dialog_box); 

,並創建如下文件夾繪製自定義對話框的xml:

dialog_box.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <corners 
     android:bottomLeftRadius="5dp" 
     android:bottomRightRadius="5dp" 
     android:topLeftRadius="5dp" 
     android:topRightRadius="5dp" /> 

    <gradient 
     android:angle="-90" 
     android:centerColor="#660D1E4A" 
     android:endColor="#66011444" 
     android:startColor="#66505E7F" 
     android:type="linear" 
     /> 

    <stroke 
     android:dashGap="0dp" 
     android:dashWidth="0dp" 
     android:width="1dp" 
     android:color="#ffffffff" /> 

</shape> 

希望這有助於你。

+0

這改變了整個對話框的顏色。 – 2017-06-30 12:02:12

1
dialog = new Dialog(this); // your dialog 
dialog.getWindow().setTitleColor(R.color.blue_background); 
+0

查看Window.java: '@Deprecated public abstract void setTitleColor(int textColor);' – StAlex 2015-08-14 12:04:31

0

標題部分的背景顏色可以很容易地設置這種方式:

int titleLayoutId = dialog.getContext().getResources(). 
    getIdentifier("topPanel", "id", "android"); 

    LinearLayout layout = (LinearLayout) dialog.findViewById(titleLayoutId); 
    if (layout != null) { 
     layout.setBackgroundColor(yourColor); 
    } 

這樣就不再需要創建一個自定義佈局。

0
dialog.getWindow().setTitleColor(getResources().getColor(R.color.blue));