2013-11-04 107 views
2

我需要在背景中創建一個沒有透明黑色圖層的DialogFragment,或者至少用透明的黑色圖層進行交換。DialogFragment刪除透明黑色

試過用這一招從不同的SO回答,但它不是我在尋找: getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.RED));

正如你可以在這個圖片上看到,有對話框周圍的紅色區域,但它不是一個我尋找,必須有另一個背景: https://www.dropbox.com/s/4hlgil6btxtqcg4/dialog.png

如果您有任何想法或解決方法,請與我分享。

謝謝!

回答

7

你必須設置android:windowIsFloating爲false,android:windowBackground您的自定義顏色的對話風格:

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="MyDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@color/orange_transparent</item> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:colorBackgroundCacheHint">@null</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:gravity">center</item> 
    </style> 

</resources> 

TestDialogFragment

public class TestDialogFragment extends DialogFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NO_TITLE, R.style.MyDialog); 
    } 
} 
4

你可以將其設置爲透明顏色:

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

或者在您的對話框中創建您自己的自定義佈局,此處爲example

+0

你可以使用一些symply - setBackgroundDrawableResource(android.R.color.transparent) – Kota1921