Android 底部关闭全屏视图被分流到屏幕外

2024-03-15

我有一个屏幕,其底部工具栏使用以下样式对齐

<style name="BottomToolbar" >
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@color/WHITE</item>
    <item name="android:layout_gravity">bottom</item>
    <item name="android:layout_alignParentBottom">true</item>
    <item name="android:minHeight">?attr/actionBarSize</item>
</style>

当我第一次进入屏幕时,工具栏与屏幕底部很好地对齐。

但是,如果我进入全屏模式(隐藏工具栏)然后返回正常模式(重新显示工具栏),工具栏现在会稍微偏离屏幕。看起来好像它向下移动了全屏模式下隐藏的状态栏的数量。

如果我将应用程序置于后台,然后将其置于前台,则底部工具栏将正确呈现。

我在屏幕顶部有一个栏(而不是应用程序栏),并且它呈现在正确的位置。我不明白为什么它错位了底部工具栏。

就好像当它确定父级的底部时,它不再调整它不再是全屏高度的事实。

我尝试过的

我尝试在退出全屏模式时在工具栏上设置“fitsSystemWindows=”true””,但这没有什么区别。

我尝试在隐藏工具栏时将其设置为“不可见”而不是“消失”,但这没有什么区别。

编辑 1 - 添加了我如何进入和退出全屏的代码片段

我使用以下命令进入全屏

getActivity().getWindow().getDecorView().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
    | View.SYSTEM_UI_FLAG_FULLSCREEN
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

我使用以下代码退出全屏

getActivity().getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

编辑 2 - 视图没有被推离底部,它的高度太小

底部视图似乎没有被推离屏幕底部,其高度被缩小并且小于应有的高度。

底部视图是一个 LinearLayout,其高度设置为“wrap_content”,但似乎高度计算不正确,因为它比其内容短,因此其内容的底部被切断。

编辑 3 - 出现问题的设备

进一步调查显示该问题仅出现在没有屏幕导航栏的设备上。例如,问题出现在我的三星 10 英寸平板电脑上,但没有出现在我的 Nexus 5x 上。


如果我删除以下标志,问题似乎已得到解决

View.SYSTEM_UI_FLAG_LAYOUT_STABLE

该标志的 Google 文档是“当使用其他布局标志时,我们希望给 fitSystemWindows(Rect) 提供一个稳定的内容插入视图。" https://developer.android.com/reference/android/view/View.html https://developer.android.com/reference/android/view/View.html

文档说 ”您可能还需要使用 SYSTEM_UI_FLAG_LAYOUT_STABLE 来帮助您的应用保持稳定的布局." (https://developer.android.com/training/system-ui/status.html https://developer.android.com/training/system-ui/status.html) and "最好包含其他系统 UI 标志(例如 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_LAYOUT_STABLE),以防止在系统栏隐藏和显示时调整内容大小。" (https://developer.android.com/training/system-ui/immersive.html https://developer.android.com/training/system-ui/immersive.html)

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

Android 底部关闭全屏视图被分流到屏幕外 的相关文章

随机推荐

  • Android 中文本行的垂直 fling 滚动

    我已经实现了 Android Note Pad 示例代码中的编辑器代码 现在我想添加垂直滚动文本行的功能 我想要完成的一个例子是 Andorid 中选项行的快速滚动 我在谷歌上搜索了滚动器和投掷的示例 但找不到任何适合我需要的东西 我还没有
  • 如何将 IP 地址和端口号作为 url 传递

    为了传递 url 我有 ip 地址和端口号 如何将其作为 http url 发送 ex ip address 10 5 90 948 port number as 71 http 10 5 90 948 71 这需要网址吗 如果不是 如何将
  • ASP.NET MVC 记住我

    我有一个基于 ASP NET MVC 4 的项目 可以进行简单的身份验证 我试图让我的网站在用户选中 记住我 复选框时自动登录 但是我在使其正常工作时遇到问题 关闭浏览器并重新打开后 用户永远不会登录 检查后 http forums asp
  • 了解 PHP 中的类

    我正式成为弱智 让我解释 直到今天我才真正考虑过类和它们之间的关系 我试图找出一些看起来很明显的东西 但由于我很愚蠢 所以我看不到它 假设我有一个将从不同文件扩展的核心类 子类如何调用其他兄弟类的函数 也就是说 如果这些类根本被视为子类 示
  • 不使用 com.sun.xml.internal.*?

    以下说法是否属实 com sun xml internal 包顾名思义是一个内部包 用户不应编写依赖于内部 JDK 实现类的代码 此类是 JDK 的内部实现细节 如有更改 恕不另行通知 我的一位同事在他的代码中使用了其中一个类 这导致 An
  • 检测点数组中的形状

    我有一系列的点 我想知道这个点数组是否代表圆形 正方形或三角形 我应该从哪里开始 我使用C 谢谢 乔恩 根据您的问题 解决此问题的一个好方法可能是使用霍夫变换 http en wikipedia org wiki Hough transfo
  • 如果第一个字符是 SQL 中的特定字符,如何删除它

    我目前有一张桌子Telephone它有如下条目 9073456789101 773456789101 0773456789101 我想要做的是只删除所有有 9 的条目开头的 9 但保留其他条目不变 任何帮助将不胜感激 虽然所有其他答案可能也
  • 仅使用代码保存networkD3桑基图

    我在 R 中创建了一个桑基图 使用networkD3包 我想使用代码保存为静态图像 而不是单击 导出 gt 另存为图像 我尝试过的当前代码 使用this https christophergandrud github io networkD
  • 您什么时候开始使用 HTML 5?

    所以 HTML 5 正如预期的那样被广泛宣传2022年准备就绪 http ishtml5readyyet com 这是一个很长的等待时间 而对准备情况的考验是 至少有两个浏览器能够完全通过 HTML 5 测试套件 显然 浏览器要通过此测试
  • Android 中的 Dom xml 解析

    我是android开发新手 我不知道如何从xml解析数据 所以请帮忙 这是我必须解析的 Xml
  • PerformFiltering() 期间发生 Android Realm 异常!

    当我使用 Spinner 时 该应用程序运行良好 但是 当我尝试使用 AutoComplete Textview 而不是 Spinner 时 我在其上键入内容时不会显示任何内容 任何帮助表示赞赏 Logcat 警告 08 23 14 01
  • 带有字符串的 String.raw 仅适用于不带括号的情况

    我知道您可以使用模板文字来提供方法的第一个参数 例如 const f x gt hello x f world returns hello world 所以我可以以某种方式理解为什么这段代码有效 String raw bla bla 但是
  • 创建无限循环

    我正在尝试创建一个无限循环 其中代码块将永远执行 我发现的所有循环文档都警告不要创建无限循环 但没有有效循环的示例 如果我有一段代码 puts foo puts bar sleep 300 我将如何永远运行这个块 loop do puts
  • Ruby on Rails,一种形式的两种模型

    我有两个非常相似的模型预处理和诊断 属于模型患者 class Pretreatment lt ActiveRecord Base belongs to patient attr accessible content end class Di
  • 设置 Asp:Chart 控件的动态大小

    我试图使我的图表宽度和高度动态化 但我无法让它工作 到目前为止我已经尝试过 我已将图表设置在 Asp Panel 内 并为面板提供了所需的百分比值
  • 在org-mode下,如何让代码块默认折叠?

    在 Emacs org mode 中 我如何指示 org mode 让 HTML 代码块默认折叠 那么当我打开一个 org 文件时它们会被折叠吗 org mode 提供了开箱即用的此功能 您可以通过自定义变量来全局设置它org hide b
  • ViewPagerIndicator中拦截触摸事件

    我正在使用杰克 沃顿的查看寻呼指示器 http viewpagerindicator com在我的 FragmentActivity 上 其中包含一个 viewpager 我在拦截 onTouch 事件时遇到困难 我知道 ViewPager
  • 如何向现有 Win32 C++ 项目添加 MFC 支持?

    我正在创建一个 C 应用程序 它使用 Qt 创建 GUI 但是 我需要使用依赖于 MFC 的第三方库 用于 CString 等 无论如何 是否可以将 MFC 添加到我的应用程序中以允许我使用这个库 或者我需要自己重写它 I saw 这个问题
  • C/C++ 中嵌套结构的尾随填充 - 有必要吗?

    这更多的是一个理论问题 我熟悉填充和尾随填充的工作原理 struct myStruct uint32 t x char p char c myStruct layout will compile to x 4 Bytes padding 4
  • Android 底部关闭全屏视图被分流到屏幕外

    我有一个屏幕 其底部工具栏使用以下样式对齐