2011-10-29 67 views
1

我正在使用樣式中設置的透明窗口背景進行自定義對話框。我在對話框後面的另一個按鈕中,使用與背景相同的button_selector設置對話框,並且它工作正常,所以我知道問題與樣式有關,更具體地說是windowBackground屬性。帶有透明窗口的Android自定義對話框背景會打破我的按鈕選擇器

有誰知道我怎麼能得到我的自定義對話框的透明窗口背景,但仍然允許我的按鈕選擇器正常工作?

包含圖片的按鈕背景設置爲@ drawable/lightblue1和@ drawable/button_selector時的樣子。

這是我的風格XML

<resources> 
    <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:windowIsFloating">false</item> 
    <item name="android:windowNoTitle">true</item> 
    </style> 
</resources> 

如果我刪除<item name="android:windowBackground">@color/transparent</item>行,然後我的按鈕選擇正常工作,但我的對話框就是把系統默認的對話框容器內的背景。

這是我的按鈕聲明xml。如果我將@ drawable/button_selector更改爲其中一個實際的png文件,那麼它會正確顯示,但使用選擇器將我的按鈕背景設置爲透明。

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_selector" 
    android:layout_marginBottom="15dp" 
    android:textSize="35sp" 
    android:text="@string/btnText1"> 
    </Button> 

這是我如何創建從Java的對話框:

Dialog dialog = new Dialog(TimeClock.this, R.style.CustomDialogTheme); 
dialog.setContentView(R.layout.tag); 
dialog.show(); 

這裏是button_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/darkblue1" /> <!-- pressed --> 
    <item android:state_focused="true" 
      android:drawable="@drawable/darkblue1" /> <!-- focused --> 
    <item android:drawable="@drawable/lightblue1" /> <!-- default --> 
</selector> 

編輯:我結束了 「僞造」 我對話了半透明的活動,這樣我可以更好地控制它的外觀。

with button set to the the png file with button set from the selector

回答

4

我不明白到底是怎麼回事錯的,但也許這是值得基於現有的半透明的主題定義您CustomDialogTheme?例如

<resources> 
    <style name="CustomDialogTheme" parent="@android:style/Theme.Translucent.NoTitleBar"> 

也有可能,你可能需要設置一些額外的樣式的項目,如(從this question採取)的:

<item name="android:windowIsTranslucent">true</item> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:windowIsFloating">true</item> 

我在想,如果Android使用這些設置,讓一個你按鈕選擇器工作?

+0

windowBackground透明也導致button_selector被顯示爲透明。 – FoamyGuy