3

我需要在背景中创建一个没有透明黑色层的 DialogFragment,或者至少将其与透明的白色层交换。

试图从不同的 SO 答案中使用这个技巧,但这不是我想要的: getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.RED));

正如你在这张图片上看到的那样,对话框周围有一个红色区域,但它不是我要找的,肯定有其他背景: https ://www.dropbox.com/s/4hlgil6btxtqcg4/dialog.png

如果您有任何想法或解决方法,请与我分享。

谢谢!

4

2 回答 2

10

您必须在对话框样式中设置android:windowIsFloating为 false 和自定义颜色:android:windowBackground

样式.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>

测试对话片段

public class TestDialogFragment extends DialogFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.MyDialog);
    }
}
于 2013-11-04T11:12:52.577 回答
4

您可以将其设置为透明色:

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

或者为您的对话框创建自己的自定义布局,这里是一个示例

于 2013-11-04T11:14:09.887 回答