【问题标题】:Hide Navigation Bar, Status Bar and Toolbar on tap隐藏导航栏、状态栏和工具栏
【发布时间】:2016-05-03 21:28:06
【问题描述】:

我想知道当用户点击屏幕时如何在 Android 中隐藏 Status BarNavigation BarToolbar,如 QuickPick 应用中所示:

我进行了大量研究,但我无法找到或猜测如何完成该行为,有人可以解释一下方法吗?

【问题讨论】:

  • 谢谢,我可以隐藏Status barNavigation bar,但不能隐藏Toolbar。此外,如果我使用github.com/chrisbanes/PhotoView,我无法使其工作,因为填充整个屏幕的图像也具有该库的onClick() 检测,以便可缩放。
  • 对于工具栏,您可以在视图所在的活动中调用 getActionBar().hide()。抱歉,如果我不能帮忙! :/ 祝你好运!
  • @Grender 嘿,你终于找到一个干净的方法了吗?
  • @LieForBananas 你找到解决这个问题的办法了吗?

标签: android material-design android-toolbar navigationbar android-statusbar


【解决方案1】:

这是我的解决方案:

button.setOnClickListener(new View.OnClickListener() {

        boolean show = true;

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "CLICK", Toast.LENGTH_SHORT).show();
            if (show) {
                toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();
                hideSystemUI();
                show = false;
            } else {
                toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
                showSystemUI();
                show = true;
            }
        }
    });

private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);

}

private void showSystemUI() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);


}

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/rootView"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#000"
 android:fitsSystemWindows="true"
 tools:context=".MainActivity">
 .....................

不要忘记在主视图中将 fitSystemWindows 设置为 true

【讨论】:

  • 你点击了哪个按钮
  • 任何你想要的按钮。这只是一个演示
  • @kelvincer 很好的答案,但问题是,当导航栏被隐藏时,它会留下一个空白区域而不是它,我的活动不会重新布局并扩展到填充屏幕。 P.S:我需要保持 fitSystemWindows 是真实的。我还尝试删除 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 以强制调整大小但有条理。
  • 我也尝试在根视图上调用 invalidate & requestLayout() 但我仍然有空白。
  • 编辑:根布局 (RelativeLayout) 扩展以填满屏幕。但是设置 layout_alignParentBottom="true" 的子视图仍然不在其位置,并且不会向下移动到导致间隙的父底部。如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多