2014-08-30 50 views
0

我想自定義我的AlertDailog。我沒有使用AlertDailog的默認佈局,所以我不想爲我的dailog設置任何特定的視圖,我只是想改變文本顏色,背景顏色等小東西。自定義AlertDailog.Builder Android

我試過兩種方法,這似乎是正確的,但令人驚訝的是他們都不起作用。

首先,我試圖與像自定義樣式創建AlertDailog:

AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.cust_dialog); 

這給了我像

enter image description here

輸出我不明白爲什麼它是一個dailog在一個盒子裏,甚至文字顏色都沒有改變,所以我嘗試了另一種方式。

我創建了一個ContextThemeWrapper,並傳遞給AlertDailog.Builder

ContextThemeWrapper ctw = new ContextThemeWrapper(this,R.style.cust_dialog); 
     AlertDialog.Builder builder = new AlertDialog.Builder(ctw); 

產量爲

enter image description here

仍文字顏色或背景沒有改變。

我cust_dialog.xml是

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="cust_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> 
     <item name="android:windowBackground">@color/brown</item> 
     <item name="android:textColor">@color/red</item> 
    </style> 
</resources> 

有人能告訴我什麼我做錯了什麼或什麼是做到這一點的正確方法是什麼?

謝謝:)

回答

0

好它伸出一點比你試圖解決更復雜,但你爲什麼不建立一個完整的自定義對話框?

我已經這樣做了,它的功能就像一個魅力。 你只需要:

  1. 創建佈局XML爲你對話視圖像一個典型的視圖
  2. 創建一個類擴展對話框
  3. 最後使用自定義對話框像其他

如果你想要示例代碼讓我知道。

0

不幸的是,創建對話框比改變屬性windowBackgroundtextColor稍微複雜一些。你應該定義你的主題是這樣的:

<style name="YourAlertDialogTheme"> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> 
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> 
    <item name="android:windowTitleStyle">...</item> 
    <item name="android:textAppearanceMedium">...</item> 
    <item name="android:borderlessButtonStyle">...</item> 
    <item name="android:buttonBarStyle">...</item> 
</style> 

我寫了一個完整的博客文章,詳細說明如何定義和連接的每一個元素的樣式,here。你就可以做的東西,如:

Please have better taste than that

(請有比這更好的味道)