DialogFragment通过状态栏重叠

我有点困惑。

起初,当我创建一个工具栏并且它被状态栏重叠时,我只需在父XML中添加fitSysmtemWindow="true" ,并且它工作得很好。

但是当我创建FullScreen DialogFragment ,它也会被状态栏重叠。 我试图添加fitSystemWindow="true" ,它不起作用。

只出现在Android 5.0+上。 未将状态栏设置为半透明。

这里是我的DialogFragment代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_create_bill_dialog,container, false);

    return view;
}

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    return dialog;
}

谢谢。为我的糟糕的Eng工作。


我有同样的问题。 我通过在我的Dialog Fragment根视图的顶部添加25dp填充来解决它,以确保它不与状态栏重叠。

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    //If showing as a dialog, add some padding at the top to ensure it doesn't overlap status bar
    if (getDialog() != null) {
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        view.setPadding(0, (int)PresentationUtils.convertDpToPixel(25f, getContext()), 0, 0);
        view.requestLayout();
    }
...
}

顺便说一句,我使用的转换dp到px的util方法可以在这里找到将像素转换为dp


在你的风格中:

<style name="MyDialog" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>

在你的对话框中:

new Dialog(builder.context, R.style.MyDialog);

这可能有所帮助:

View decorView = getWindow().getDecorView();

//隐藏状态栏。

int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;

decorView.setSystemUiVisibility(uiOptions);

//记住,如果//状态栏被隐藏,则永远不应该显示动作栏,所以如果有必要,也要隐藏它。

ActionBar actionBar = getActionBar();

actionBar.hide();

上面的代码使设备4.1和更高版本的状态栏失效

链接地址: http://www.djcxy.com/p/30161.html

上一篇: DialogFragment overlap by status bar

下一篇: sdk to upload images to s3 using nodejs