在片段中隐藏状态栏

liz*_*sam 1 android android-titlebar android-fragments android-toolbar

我试图将状态栏隐藏在片段中。我已经成功隐藏了工具栏,但我也只想在一个片段中隐藏状态栏。

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

   // requestWindowFeature(Window.FEATURE_NO_TITLE);

        ((HomeActivity)getActivity()).getSupportActionBar().hide();
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码对于隐藏工具栏工作正常

  requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

如果我requestWindowFeature在片段中onCreate(如上所述)崩溃了。

实现第二个答案后添加了三张图片

[正常屏幕] [1] [使用您的代码后,作品将有效] [2] [从全屏模式返回时[3]

  [1]: https://i.stack.imgur.com/KbX4T.jpg
  [2]: https://i.stack.imgur.com/sSWqf.jpg
  [3]: https://i.stack.imgur.com/urJaK.jpg
Run Code Online (Sandbox Code Playgroud)

Lal*_*dar 6

虽然只是我项目中的复制粘贴,但是通过这种方式,您可以将状态栏隐藏在片段中。

 private int currentApiVersion;       
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        getActivity().getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        currentApiVersion = android.os.Build.VERSION.SDK_INT;
        final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_FULLSCREEN    
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        if(currentApiVersion >= Build.VERSION_CODES.KITKAT) {
            getActivity().getWindow().getDecorView().setSystemUiVisibility(flags);
            final View decorView = getActivity().getWindow().getDecorView();
            decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
                @Override
                public void onSystemUiVisibilityChange(int visibility) {
                    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                        decorView.setSystemUiVisibility(flags);
                    }
                }
            });
        }
        return inflater.inflate(R.layout.yourLayout, container, false);
    }
Run Code Online (Sandbox Code Playgroud)

请记住,此代码将被复制到您的Fragment类中,而不是以任何方法复制。

是的,您只可以使用以下代码:

getActivity().getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)


alt*_*ltu 5

@Lalit Singh Fauzdar 对隐藏 statusBar 的回答是正确的。如果你想显示状态栏你可以使用

View decorView = getActivity().getWindow().getDecorView(); // Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(uiOptions);
Run Code Online (Sandbox Code Playgroud)