DialogFragment 移除透明黑色背景

3
我需要创建一个 DialogFragment,但是不想要背景中的透明黑色层,或者至少用透明白色替换它。
尝试使用来自其他 SO 回答的技巧,但这不是我所寻找的: getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.RED)); 如您在此图像中所见,对话框周围有一个红色区域,但这不是我要找的,必须有另一种背景: https://www.dropbox.com/s/4hlgil6btxtqcg4/dialog.png 如果您有任何想法或解决方法,请与我分享。
谢谢!
2个回答

11

您需要将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>

测试对话框片段

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));

或创建自定义布局以适应您的对话框,下面是一个示例


你可以使用一些简单的代码 - setBackgroundDrawableResource(android.R.color.transparent)。 - Kota1921

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接