Android:检测导航栏可见性

2023-11-24

如何检测导航栏的存在并将其隐藏?

In my onCreate() I call hideNavigationBar()方法来隐藏导航栏,然后我注册一个侦听器,以便在用户触摸屏幕上的任何位置时每次导航栏变得可见时隐藏导航栏(如文档。当导航栏在触摸事件后变得可见时hideNavigationBar()方法被监听器再次调用,但没有效果,栏仍然可见。

这是我的onCreated() method:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hideNavigationBar();

        View decorView = getWindow().getDecorView();
        decorView.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            Toast.makeText(getApplicationContext(), "Visible", Toast.LENGTH_SHORT).show();
                            hideNavigationBar();
                        } else {
                            Toast.makeText(getApplicationContext(), "Not visible", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }

这是我的hideNavigationBar() method:

 private void hideNavigationBar() {

        Toast.makeText(getApplicationContext(), "hideNavigationBar()", Toast.LENGTH_SHORT).show();

        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

如何在每次导航栏可见时将其隐藏?

Thanks


您可以将此代码添加到活动的 onCreate() 方法中:

      View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener() {
                @Override
                public void onSystemUiVisibilityChange(int visibility) {
                    if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {                
                        // TODO: The navigation bar is visible. Make any desired
                        // adjustments to your UI, such as showing the action bar or
                        // other navigational controls.
                        hideNavigationBar() 

                    } else {
                        // TODO: The navigation bar is NOT visible. Make any desired
                        // adjustments to your UI, such as hiding the action bar or
                        // other navigational controls.
                    }
                }
            });

通常最好的做法是使 UI 与系统栏可见性的变化保持同步。例如,您可以使用此侦听器来隐藏和显示操作栏,同时隐藏和显示状态栏。Android-响应 UI 可见性变化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:检测导航栏可见性 的相关文章

随机推荐

  • 使用 spring 数据保存嵌套对象 - 使用 id 作为参考

    假设您正在创建该类型的新实体User User 有嵌套对象Billing鉴于您知道Billing存在于 ID 1 中 是否有一种简单的方法可以在新的User以及现有的Billing 假设获取一个Billing将对象设置给用户是一项昂贵的操作
  • Objective-C 中的方法重载?

    据我所知 Objective C 不支持方法重载 在 Objective C 中可以用什么替代方案呢 或者我应该始终使用不同的方法名称 正确 objective C 不支持方法重载 因此您必须使用不同的方法名称 但请注意 方法名称 包括方法
  • 以前的兄弟姐妹不工作

    我想瞄准第一个 p 通过选择第二个在 div 内 p p 并使用previousSibling财产 但它不起作用 p div p test p p test p div document getElementById p2 previous
  • 使用开始时间和结束时间之间的时间过滤数组或 XML

    我有一个 API 调用 该调用返回 XML 我将 XML 转换为数组 然后使用 json encode 在 jsonp 调用中发回响应 我正在做的事情正在工作 但 API 不允许我按状态过滤 按开始和结束时间过滤 也不允许我确保房间可用 几
  • 使用 AJAX 登录时 Chrome 提示保存密码

    注意 这个问题在其原始版本的基础上进行了大量编辑 问题已大大简化 类似的问题以前已经以不同的形式被问过几次 例如 如何让浏览器提示保存密码 浏览器如何知道何时提示用户保存密码 然而 这个问题涉及的是 Chrome 功能的一个非常具体的方面
  • 在 PHP 中使用分块上传 1GB 文件

    我有一个 Web 应用程序 可接受最大 4 MB 的文件上传 服务器端脚本是 PHP Web 服务器是 NGINX 许多用户请求大幅增加此限制以允许上传视频等 然而 PHP 似乎没有简单的解决方案来解决这个问题 首先 在客户端 我正在寻找一
  • 如何通过 Spring Web 服务器将 HTTP 视频流代理到任意数量的客户端

    假设我有一个视频 HTTP 流在与我的 Spring Web 服务器位于同一网络的服务器上广播 例如在某些 url 中 例如 http localhost 9090 httpstream 如何使用 Spring 将此视频流代理给任意数量的客
  • 如何将 Numba 用于 Pytorch 张量?

    我是 Numba 新手 我需要使用 Numba 来加速一些 Pytorch 功能 但我发现即使是一个非常简单的功能也不起作用 import torch import numba numba njit def vec add odd pos
  • 多记录更新时更新触发器多久触发一次?

    我创建了一个on update扳机 如果我在一条语句中更新表中的 5 条记录 触发器将执行多少次 如果我有多个语句更新单个事务中的记录 它会改变吗 是执行 5 次 还是在所有事务完成后只执行一次 这完全取决于您使用的触发器类型 行级触发器将
  • 通过 MSMQ 解耦 Web 层和数据库层是必要的还是过度的?

    我正在组装一个简单的 asp net Web 控件 作为 ajax 表单发布的结果 将一条记录插入到 MSQL 数据库中 包含此控件的页面可能会在很短的时间内收到数千次点击 我担心打开数据库连接 插入记录然后关闭每个请求的连接的性能问题 我
  • 从系统获取注销事件

    我正在做一个应用程序 用于在用户注销时清除临时文件 历史记录等 那么我如何知道系统是否要注销 在 C 中 有一个房产位于环境告诉关闭过程是否已开始的类 Environment HasShutDownStarted 但经过一番谷歌搜索后 我发
  • 模拟框架如何工作?

    如果我要编写一个模拟库 它将如何工作 换句话说 它们如何工作 我想知道的一件事是 您总是设置期望 因此实际上您需要将期望与该方法在运行时执行的操作进行比较 因此我假设需要反射 在运行时解析类型 另外 当使用术语 模拟对象 时 该对象是被删除
  • 如何将键映射到数据框列的多个值?

    我有一个 df 列 如下所示 col1 Non Profit Other 501c3 501c3 Sole Proprietor 如何创建字典对象或映射层 对所有建议开放 如果它匹配条件并更改键值 我可以在其中传递任何值 例如 如果该值为O
  • asp.net MVC - ValidationSummary 不显示

    我有一个奇怪的问题 即未显示 ValidationSummary 但是 正在显示 ValidationMessage 我检查了输出页面源代码 它们的颜色并没有遮挡它们 我用的是RC 有任何想法吗 编辑 在 ValidationSummary
  • [Pandas]如何获取每组中前n%的记录

    这是我的数据框 df pd DataFrame 1 A 40 2 A 60 3 A 47 4 B 33 5 B 69 6 B 22 7 B 90 8 C 31 9 C 78 10 C 12 11 C 89 12 C 88 13 C 99 c
  • 将当前日期增加 5 天

    date date Y m d current time timestamp 0 我该如何改变 date to date 5 days PHP 版本是 5 2 此代码不起作用 date cur date Y m d current time
  • 为什么 std::apply 使用通用函数会失败?

    取自参考参数 为什么调用std apply add generic 编译失败 有办法解决吗 include
  • 如何正确卸载 C++ Shell 扩展 DLL

    I have shell 扩展 dll用 C 和 COM 编写 dll 被注册并加载到内存中 我的升级设置程序将执行以下操作 注销shell扩展dll 杀死explorer exe 复制更高版本的 shell 扩展 dll 步骤 2 启动e
  • 如何设置默认 Elixir 混合任务

    如果我有一个mix exs文件类似 defmodule Mix Tasks My task do use Mix Task shortdoc Perform my task def run do IO puts Working end en
  • Android:检测导航栏可见性

    如何检测导航栏的存在并将其隐藏 In my onCreate I call hideNavigationBar 方法来隐藏导航栏 然后我注册一个侦听器 以便在用户触摸屏幕上的任何位置时每次导航栏变得可见时隐藏导航栏 如文档 当导航栏在触摸事