转换为新活动后隐藏系统Ui

时间:2016-07-31 20:35:48

标签: java android user-interface system

我对活动中的ui提出了一个严肃的问题。

我发现我可以使用以下代码隐藏完整的ui

public static void disableSystemUi(View v){
    final View view = v;
    if (view != null) {
        //"hides" back, home and return button on screen.
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                View.SYSTEM_UI_FLAG_IMMERSIVE |
                View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
                View.SYSTEM_UI_FLAG_FULLSCREEN);
        view.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        // Note that system bars will only be "visible" if none of the
                        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
                                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                                    View.SYSTEM_UI_FLAG_IMMERSIVE |
                                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
                                    View.SYSTEM_UI_FLAG_FULLSCREEN);
                        }
                    }
                });
    }
}

它适用于正常活动,但是当我启动对话框时,系统UI会很快出现,并且会出现在每个对话框片段中。它通过切换正常活动完美地工作。有没有人解决这个问题呢?

我制作了一个视频来准确显示问题。

我知道只有在当前/激活视图中调用此方法时我才能隐藏系统ui。

Gif/Vid

我希望有人可以帮助我:(

编辑:

是的,我在对话框片段中使用了这个方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.i(TAG, "onCreateView()");

    //Log.w("Popup", "onCreateView(), this buttonSet is " + (this.buttonSet == null ? "" : " not") + "null");
    //Log.w("Popup", "onCreateView(), this builder is " + (this.builder == null ? "" : " not") + "null");
    //Log.w("Popup", "onCreateView(), this builder's buttonset is " + (this.builder.getButtonSet() == null ? "" : " not") + "null");
    //  Somehow, this builder will not be null, however, the buttonSet will be. Fix it!?????????W WTWTTWTTWF

    //if(builder != null && buttonSet == null) {
    //    buttonSet = builder.getButtonSet();
    //

    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
    View rootView = inflater.inflate(R.layout.popup_container, container, true);
    LinearLayout vg = (LinearLayout) rootView;
    this.container = vg;

    BootReceiver.disableSystemUi(getDialog().getWindow().getDecorView());
    Log.i(TAG, "onCreateView(): The rootView has a paddingTop of " + vg.getPaddingTop());

0 个答案:

没有答案