如何在android中显示全屏片段活动?

时间:2017-09-16 10:17:33

标签: android android-dialog

我知道如何显示全屏活动,但它在片段活动中不起作用?

public class Dialog extends Fragment  {
    public Dialog() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.dialog, container, false);
    }
}

4 个答案:

答案 0 :(得分:1)

尝试使用DialogFragment

public class FullScreenDialogFragment extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.dialog, container, false);
    }

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

    @Override
    public void onStart() {
        super.onStart();
        Dialog dialog = getDialog();
        if (dialog != null) {
            dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
    }
}

答案 1 :(得分:0)

在您的问题中,您已询问如何显示全屏片段活动?

如果您知道如何制作全屏活动。您必须以相同的方式使FragmentActivity全屏显示。因为FragmentActivityActivity的子类。

   ↳    android.app.Activity
               ↳    android.support.v4.app.FragmentActivity

同样在您的问题中,您所包含的课程为Fragment,而不是FragmnetActivity

如果您需要全屏制作片段,则必须全屏显示您的托管活动。

使用getActivity()方法从片段中获取托管活动。然后你可以使片段全屏。

答案 2 :(得分:0)

@shmakova的回答对我有用,但后来我的同事指出了一个更简单的解决方案。将对话框的样式从样式继承就足够了,样式的名称以NoTitleBar.Fullscreen结尾并添加windowNoTitle元素。例如: 在我的对话中:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new AppCompatDialog(getActivity(), R.style.MyDialogStyle);
}
src/main/res/values/styles.xml中的

<style name="MyDialogStyle" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
    <item name="windowNoTitle">true</item>
</style>

此类方法有以下几个优点:您不必覆盖onCreateDialog,并且可以拥有多个styles.xml个实例,具体取决于设备功能。例如,您可以仅在较小的屏幕上将对话框扩展为全屏。

答案 3 :(得分:0)

尝试此解决方案

public class setWallpaperFragment extends DialogFragment {

    public setWallpaperFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        int theme = android.R.style.Theme_Black_NoTitleBar_Fullscreen;
        setStyle(DialogFragment.STYLE_NO_TITLE,theme);
    }