Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Android 10 (API 29)中隐藏状态栏,并在应用程序中使用它的空间

在Android 10 (API 29)中隐藏状态栏,并在应用程序中使用它的空间
EN

Stack Overflow用户
提问于 2022-05-09 15:45:29
回答 2查看 2.2K关注 0票数 5

我试图在Android 10中隐藏状态栏。我已经读过很多类似问题的答案,但它们对我的设备不起作用。目标是使用状态栏的空间作为应用程序视图的一部分:

下面描述的一些解决方案可以在模拟器上工作,但不适用于我的物理设备(Redmi 10,API版本29)。

如有任何建议,我将不胜感激。

我试过的是:

  • 使用不同的预定义样式,如@android:style/Theme.NoTitleBar.Fullscreen等。
  • 使用不同的样式属性,包括:android:windowFullscreenfitsSystemWindows等。
  • 使用setSystemUiVisibility在程序代码中设置不同的样式,包括SYSTEM_UI_FLAG_FULLSCREENSYSTEM_UI_FLAG_IMMERSIVE_STICKYSYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_LAYOUT_FULLSCREENSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONSYSTEM_UI_FLAG_LAYOUT_STABLE
  • 使用clearFlagsaddFlagssetFlags添加和删除不同的标志。
  • 使用setStatusBarColor.将状态栏颜色设置为透明
  • 使用requestWindowFeature.请求不同的特性
  • 将布局顶部填充更改为负值。
  • 通过定义applyTopWindowInsetsForViewonApplyWindowInsets函数来使用内嵌。

我所做的。

我得到了两个结果,但这两个结果对我都没有好处。

  1. 半透明状态栏

  1. 完全黑色状态栏,不占用其空间为应用程序视图。

2022年5月10日更新:

根据以下答案,在API 29或更早版本上使用WindowInsetsController是不可能的:如何在我的Android 11应用程序中隐藏状态栏?

解决方案1

@Zain提出。

活动:

代码语言:javascript
运行
AI代码解释
复制
protected void onCreate(Bundle savedInstanceState) {
    ...
    WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
    WindowInsetsControllerCompat windowInsetsCompat = new WindowInsetsControllerCompat(getWindow(), getWindow().getDecorView());
    windowInsetsCompat.hide(WindowInsetsCompat.Type.statusBars());        
    windowInsetsCompat.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
    ...

theme.xml:

代码语言:javascript
运行
AI代码解释
复制
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

解决方案2

活动:

代码语言:javascript
运行
AI代码解释
复制
protected void onCreate(Bundle savedInstanceState) {
    ...        
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | 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_LOW_PROFILE
    );        
    ...

theme.xml:

代码语言:javascript
运行
AI代码解释
复制
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-09 19:16:43

您需要在应用程序中显示内容(文件参考资料) )。

步骤1:使用:WindowCompat.setDecorFitsSystemWindows(window, false)

这是确保您的应用程序沿边到边的第一步,也就是说,使用显示的整个宽度和高度进行布局。使用WindowCompat.setDecorFitsSystemWindows(window,false)将应用程序布局到系统栏后面,如下面的代码示例所示:

步骤2:使用WindowInsetsControllerCompat隐藏状态栏

代码语言:javascript
运行
AI代码解释
复制
    WindowInsetsControllerCompat(window, window.decorView).apply {
        // Hide the status bar
        hide(WindowInsetsCompat.Type.statusBars())
        // Allow showing the status bar with swiping from top to bottom
        systemBarsBehavior =
            WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
    }

步骤3:从步骤1开始,底部的活动内容将被底部的导航条模糊;然后需要使用WindowInsetsListener将活动的根布局的底部边缘调整为导航栏的高度。

科特林:

代码语言:javascript
运行
AI代码解释
复制
// root layout of your activity
val root = findViewById<ConstraintLayout>(R.id.root)
ViewCompat.setOnApplyWindowInsetsListener(
    root
) { view: View, windowInsets: WindowInsetsCompat ->
    val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
    view.layoutParams = (view.layoutParams as FrameLayout.LayoutParams).apply {
        // draw on top of the bottom navigation bar
        bottomMargin = insets.bottom
    }

    // Return CONSUMED if you don't want the window insets to keep being
    // passed down to descendant views.
    WindowInsetsCompat.CONSUMED
}

爪哇:

代码语言:javascript
运行
AI代码解释
复制
WindowInsetsControllerCompat windowInsetsCompat = new WindowInsetsControllerCompat(getWindow(), getWindow().getDecorView());

windowInsetsCompat.hide(WindowInsetsCompat.Type.statusBars());
windowInsetsCompat.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);

// root layout of your activity
ConstraintLayout root = findViewById(R.id.root);

ViewCompat.setOnApplyWindowInsetsListener(
        root
        , (view, windowInsets) -> {
            Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
            FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
            params.bottomMargin = insets.bottom;
            return WindowInsetsCompat.CONSUMED;
        });

步骤4:最终确保在应用程序的主题中允许在裁剪区域进行绘图:

代码语言:javascript
运行
AI代码解释
复制
<item name="android:windowLayoutInDisplayCutoutMode">always</item>
票数 7
EN

Stack Overflow用户

发布于 2022-05-10 12:11:03

我找到了解决办法。以下一行是必要的:

<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72179274

复制
相关文章
【HTML5】HTML5 新增 input 表单 ( 邮箱输入表单 | 网址输入表单 | 日期输入表单 | 时间输入表单 | 电话输入表单 | 搜索栏输入表单 | 颜色选择器输入表单 )
一、HTML5 新增 input 表单 ---- HTML5 新增 input 表单 : 邮箱输入表单 : 必须输入邮箱 , 如果输入格式错误 , 提交时会在对话框中报错 ; <input type="email" /> URL 输入表单 : 只能输入网址 , 格式错误会在对话框中报错 ; <input type="url" /> 日期输入表单 : 右侧的下拉菜单选择日期 ; 如果在手机中打开 , 会弹出手机中自带的日期选择对话框 ; <input type="date" /> 时间输入表
韩曙亮
2023/04/24
3.4K0
【HTML5】HTML5 新增 input 表单 ( 邮箱输入表单 | 网址输入表单 | 日期输入表单 | 时间输入表单 | 电话输入表单 | 搜索栏输入表单 | 颜色选择器输入表单 )
HTML 表单和输入
表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等。
用户8442333
2021/08/21
2K0
在HTML中如何使用CSS?
一、前言 在 HTML 中使用 CSS,包括内联式、内嵌式、链接式和导入式。 二、分类 2.1 内联式 内联式是所有样式应用方式中最为直接的一种,它通过对 HTML 标记使用 属性,将 CSS 代码直接写在其中。 内联式是最简单、直接的 CSS 使用方法,但它的针对性很明显,只能作用于当前标记,造成代码冗余,维护比较困难。 2.2 内嵌式 内嵌式与内联式使用方法不同,它将 CSS 代码写在 标记之间,并需要采用 标记进行声明。 使用内嵌式 CSS 用法时 CSS 代码将被集中放在 标记中,这样方便查
企鹅号小编
2018/02/01
8.6K0
AngularJS中使用表单输入的应用设计
在Angular中使用表单元素非常方便。正如我们在前面几个例子中看到的,你可以使用ng-model属性把元素绑定到你的模型属性上。这一机制对于所有标准的表单元素都可以起作用,例如文本框、单选按钮、复选
企鹅号小编
2018/01/08
2.1K0
AngularJS中使用表单输入的应用设计
php将表单中数据传入到数据库
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>无标题文档</title> 5 </head> 6 7 <body> 8 <form action="" method="post">//创建表单 9 姓名 10 <input type="text" name="str"> 11 <input type="submit" name="submit
码缘
2019/09/11
2.2K0
HTML中的表单
表单的用途很多。表单的用途主要用来收集客户端提供的相关信息,是网页具有相互交互的功能,是用户与网站实现交互的重要手段。当用户填写完信息后做提交操作,将表单的信息从客户端的浏览器传送到服务器上,经过服务器处理后,再将用户所需要的信息传送回客户端的浏览器上。在网页中,最常见的表单形式有文本框,密码文本框,单选按钮,复选框,按钮(普通,提交,重置),文件域或图像域,文本域和列表(菜单)。
小末快跑
2019/07/03
5.4K0
如何使用JS将 HTML 页面或表单转化为 PDF文档
PDF 是一种流行的文件格式,我们用来在不同平台和设备上呈现和共享具有固定布局的文档。
前端达人
2023/08/31
5920
如何使用JS将 HTML 页面或表单转化为 PDF文档
通过Bootstrap 输入框组,表单控件的使用案例
Bootstrap 支持的另一个特性,输入框组。输入框组扩展自 表单控件。使用输入框组,您可以很容易地向基于文本的输入框添加作为前缀和后缀的文本或按钮。
好派笔记
2021/09/18
2K0
layui表单提交参数如何传递_HTML中form表单数据提交方式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
3.3K0
如何是HTML页面中的表单居中显示[通俗易懂]
在进行前端页面设置的时候,发现写完的form表单始终无法居中显示,详细如图1所示:
全栈程序员站长
2022/09/20
7.8K0
如何是HTML页面中的表单居中显示[通俗易懂]
如何创建HTML表单?html表单代码怎么写[通俗易懂]
html表单代码是什么?如何创建HTML表单?这些对于新手会感到陌生,下面我们为你总结一下html表单代码怎么写?以及html表单的创建?
全栈程序员站长
2022/09/22
6.7K0
数据是如何输入到神经网络中
我们在做深度学习任务的时候,总会有这样的困惑? 比如我们做的CV项目,那么我们采集的图像数据集是如何输入到神经网络中去的呢?图像中的特征又是如何提取的呢?
杨鹏伟
2022/07/17
7540
数据是如何输入到神经网络中
如何使用 Tailwind CSS 设计高级自定义动画
Tailwind CSS,一款流行的实用型CSS框架,提供了一套强大的工具,可以轻松地创建令人惊艳的动画效果。
前端达人
2023/08/31
1.8K0
如何使用 Tailwind CSS 设计高级自定义动画
如何仅使用 JavaScript 将任何 HTML 页面或表单转化为 PDF文件
PDF 是一种流行的文件格式,我们用来在不同平台和设备上呈现和共享具有固定布局的文档。
winty
2023/08/23
1.6K0
如何仅使用 JavaScript 将任何 HTML 页面或表单转化为 PDF文件
将pandas数据显示到现有的flask html表中
2 pandas读写数据库 在python连接好数据库后,pandas可以利用read_sql()方法将数据读入DataFrame。这里可以看一下代码。
赵云龙龙
2020/12/15
4.3K0
将pandas数据显示到现有的flask html表中
如何使用免费控件将Word表格中的数据导入到Excel中
我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候,
全栈程序员站长
2022/07/05
4.4K0
如何使用免费控件将Word表格中的数据导入到Excel中
6.HTML输入表单标签元素介绍
描述: 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入内容,其包含 文本框、文本域(textarea)、按钮、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等元素都要放在form标签里面或者进行form的id值的调用,否则提交的数据到不了后端。
全栈工程师修炼指南
2023/03/21
4.7K0
表单提交后端如何接收数据_html怎么接收表单提交的内容
然而,我们可以采取引入模块的做法来简化原生代码,并且可以实现文件上传的: 首先,我们需要在cmd或者powershell中安装这个模块:
全栈程序员站长
2022/11/08
5.9K0
表单提交后端如何接收数据_html怎么接收表单提交的内容
点击加载更多

相似问题

将HTML表单数据发布到Google电子表格

10

如何使用Google电子表格作为后端创建HTML数据输入表单

45

如何将数据从google表单输入到

12

将HTML表单发布到Google Docs电子表格

12

如何通过java将数据发布到html表单?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文