问题标签 [android-immersive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1767 浏览

android - 进入沉浸式模式时状态栏背景留在屏幕上?

我一直在到处寻找,但我对此一无所知:试图在项目中激活沉浸式模式;几乎一切正常,除了我的状态栏的背景总是留在那里,破坏了沉浸感......我已经包含了激活沉浸模式之前和之后的屏幕截图,并将“colorPrimaryDark”设置为全绿色以获得最大对比度: 屏幕截图显示了状态栏的背景,什么都没有 我在空白项目中使用并重新插入以隔离此问题的代码直接来自谷歌开发示例,在我的 MainActivity 中,我有:

我想知道我的问题是否来自布局或样式文件,但这些是来自项目生成的原始文件......我希望有人能指出我失败的地方!提前致谢!

编辑:我发现android:fitsSystemWindows="true"从我的活动的布局文件中删除:允许真正的全屏模式,但是,我的 ActionBar 部分隐藏在 StatusBar 后面 - 当显示时。会不会是我设置getSupportActionBar().show();的时候onSystemUiVisibilityChangeListener,画得太早了?

编辑 2: 到目前为止,我的理解是,关于我的内容(包括操作栏)的位置/大小,我只有 2 个选择:
屏幕顶部,它将显示被状态栏部分隐藏的操作栏,
或者在状态栏的下方底部,当状态栏被隐藏时,这会给我留下一个“洞”-_-
我现在正在寻找一种解决方案,在我的onSystemUiVisibilityChangeListener方法中自己在屏幕外/屏幕上设置 ActionBar 的动画,但找不到方法为了抓住它的观点,在那里发布的解决方案https://stackoverflow.com/a/21125631/6463888似乎已经过时了......

0 投票
1 回答
999 浏览

java - 如何在 Android 中正确实现沉浸式全屏模式?

我有一个应用程序,其中有一个包含多个片段层的活动。我想在应用程序的某些状态下在沉浸式模式和普通模式之间切换。一切都很好,直到我按照Android 文档调用 Hide System UI

文档代码

碎片的大小开始变得奇怪。在堆栈溢出中找不到任何解决方案有任何帮助。

我已将项目上传到GitHub。您能否就我做错了什么提供一些见解?

  1. 项目何时开始 第一步

  2. 当另一个 Fragment 添加到同一个 FrameLayout 时

第二步

  1. 在触发沉浸模式时将第三个片段添加到另一个 FrameLayout

第 3 步

  1. 问题开始当第三个片段的视图最小化时,我们触发“正常模式”。先前片段的顶部和底部被切掉。 第4步

此外,转到全屏,旋转,然后点击 PIP。它变得更加丑陋。

我已将项目上传到GitHub。您能否就我做错了什么提供一些见解?

0 投票
1 回答
521 浏览

android - 安卓沉浸式模式

我想隐藏导航栏。如果用户从外到内给他的手指吸毒,Onyl 会显示它。我测试这段代码:

活动开始良好,导航栏不出现。Buti 有下一个问题: 1)如果在导航栏显示的任何地方触摸屏幕。2)当它显示时,它不显示透明。3) 导航栏从不隐藏。

这三个项目怎么加?我错过了什么。

0 投票
3 回答
790 浏览

android - 弹出窗口在沉浸式模式下以空格/间隙显示,仅在棉花糖上

特别是在 Marshmallow(在 Nexus 5X 和 6P 上测试)上,当我PopupWindow在沉浸式模式下在屏幕上打开一个(具有 match_parent 宽度和高度)时,弹出窗口的内容不会扩展到全屏,导航按钮有一个间隙以前是。效果就像不可见的导航按钮仍然存在,添加了空格/间隙/边距。

这就是我创建弹出窗口的方式:

这是弹出布局的开始:

这是显示弹出窗口的全屏视图:

你知道 Marshmallow 是否有任何改变会导致这个错误?在 Nexus 5 中一切正常,版本 5.0.1 和我测试过的其他旧手机/版本。先感谢您!:)

0 投票
0 回答
34 浏览

java - 在沉浸式模式下,如何限制系统和导航栏的显示

我目前正在使用cocos2d-x创建的 Android 游戏中使用IMMERSIVE_STICKY标志,方法是在我的AppActivity.java文件中实现它。

然而,默认行为是当用户从屏幕顶部向下滑动并且当用户从屏幕底部向上滑动时以纵向模式显示系统和导航栏。

我想:

  1. 从屏幕底部向上滑动作为游戏元素,但这会触发导航栏的显示

  2. 我想限制这些条的显示,以便它们在用户从TOP滑动时显示。这样我的游戏就可以利用添加的屏幕空间并在屏幕底部接受用户输入。

谁能告诉我该怎么做?谢谢你。

0 投票
0 回答
482 浏览

android - 在 Android 粘性沉浸模式下强制不透明状态栏

当我使用 Android 的粘性沉浸式模式时,某些设备(例如 Nexus 表格)会在临时将状态栏和导航栏滑到屏幕上时将状态栏显示为半透明。在其他一些设备(例如三星 S5)上,无论是在 Marshmallow 上,状态栏都是不透明的。

不幸的是,在我的情况下,半透明的状态栏与窗口内容变得非常混乱,使其毫无用处。

如何强制临时的“粘性沉浸式”状态栏在所有设备上不透明,从而避免此问题?我试过了

但这丝毫没有帮助。

0 投票
0 回答
455 浏览

android - 如何防止用户点击Android中的导航按钮

我遇到了用户会意外退出我的应用程序的问题。我知道 Android 正在阻止阻止使用这些按钮,因为您应该始终能够以某种方式退出您的应用程序,但我正在为盲人和视障人士创建一个应用程序,我将实现一个特殊的退出应用程序,这样他们就不会关闭当他们将使用它时。

以下是我收集的一些内容:

  • 我可以阻止该onBackPressed()功能并防止返回。

  • 我不能使用onKeyEvent(),因为它不会抓住主页点击

  • 一个很好的例子是 MX Player,您可以在其中“锁定”您的屏幕,但它只是在整个屏幕上绘制,从而防止用户点击任何东西。

好的,所以我想获取与 MX Player 相同的东西,除了我希望用户仍然与屏幕进行交互。

我尝试使用Immersive full screen谷歌为全屏应用程序引入的,但每当用户在屏幕上滑动手指时,Navigation Menu弹出窗口。我可以一直隐藏这个吗?另外,我可以防止幻灯片Status Bar显示按钮吗?我想完全控制用户如何在屏幕上移动手指。

因此,如果我回到 MX Player 解决方案 - 在屏幕上绘图。我可以像Canvas没有焦点的那样创建它只是为了防止点击按钮吗?

很感谢任何形式的帮助。谢谢。

0 投票
1 回答
2518 浏览

android - 仅在横向模式下使用沉浸式模式

我尝试制作将在横向上进入沉浸式模式(没有状态栏和导航栏)并在 portrate 上禁用沉浸式模式(带有返回状态栏和导航栏)的应用程序。没有重新启动活动(onCreate 仅调用一次)。我写了一个小示例应用程序来展示我的问题。

AndroidManifest.xml

activity_main.xml

MainActivity.java

查看我的问题的步骤:

1)启动应用程序(纵向模式),结果我在全屏上看到带有红色背景的子RelativeLayout,带有标题栏、状态栏、导航栏。这是正确的。截屏

2) 旋转到横向。我再次看到正确的结果:在没有标题栏、状态栏、导航栏的沉浸式模式下具有红色背景的 Child RelativeLayout。

3) 旋转到纵向。并看到正确的结果:就像第一步的屏幕截图一样。

4) 再次旋转到横向。我看到不正确的结果。Child RelativeLayout 未拉伸到父大小。我们在屏幕的顶部和底部看到空白字段。有问题的截图

如何解决?为什么所有旋转到景观而不是第一个不正确的调整大小子 RelativeLayout ?

Ps Min sdk 版本 19。

0 投票
1 回答
1076 浏览

android - Android 沉浸式下拉菜单,隐藏导航栏

将 listview 添加到 PopupWindow 对象,单击时导航键栏弹出,是否有一种方法可以在单击下拉菜单时阻止导航栏。

0 投票
1 回答
100 浏览

android - 无论活动屏幕如何,都在屏幕上显示 AlertDialog

我想显示一个对话框,无论用户在哪个屏幕。假设如果用户打开应用程序,如果我收到服务器消息,则在初始屏幕中,我必须在对话框中显示它。同时有一个 autologin 选项。所以它可以移动到我的下一个活动。如果是这种情况,不应该关闭对话框。它应该显示在新打开的活动而不是以前的活动上。另一件事是,即使显示了对话框,我也应该能够控制我的活动按钮。

这就是我正在做的事情。

相反,我在所有活动中显示对话框。

提前致谢。