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

how to show full screen fragment activity in android?

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

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

尝试使用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));
        }
    }
}

在您的问题中,您问过如何显示全屏片段activity?

如果你知道如何使activity全屏。您必须使用相同的方法来使 FragmentActivity 全屏显示。因为 FragmentActivityActivity 的子 class。

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

同样在您的问题中,您包含的 class 是 Fragment,而不是 FragmnetActivity

如果你需要让你的片段全屏,你必须让你的主机activity全屏。

使用 getActivity() 方法从片段中获取宿主 activity。然后就可以全屏了。

@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 实例,具体取决于设备功能。例如,您可以只在较小的屏幕上将对话框扩展到全屏。

试试这个解决方案

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