如何将状态栏设置为透明但使导航栏保持黑色?

2023-12-10

正如我的问题所示,我试图弄清楚如何将状态栏颜色设置为透明,同时保持导航栏黑色/自然色(不影响屏幕高度) 我参考了这个网站:Android 完全透明的状态栏?部分有效的解决方案之一是:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

但这会将我的屏幕内容推到导航栏下方,使其透明。我希望屏幕尺寸保持不变,同时保持导航栏的自然颜色。只是想让状态栏透明,但似乎所有其他方法都使其灰白色,即使我将其设置为透明 (setstatusbarcolor选项)。

关于如何去做有什么想法吗?我的最低 SDK 版本为 23.

The first view without doing anything

第二个视图是添加上面的代码后的视图,其中状态栏可以工作,但屏幕在下面滑动,使导航栏也透明(甚至设置fitsSystemWindows = false没有帮助)。

enter image description here

提前致谢!


尝试做下面提到的事情可能会对您的示例有所帮助。如果您仍然遇到问题,请告诉我。如果它能解决您的问题,请提供答案。

AndroidManifest.xml

<activity
   ....            
   android:theme="@style/TranslucentStatusBarTheme">
</activity>

values-v23\styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TranslucentStatusBarTheme" parent="AppTheme">
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowLightStatusBar">true</item>
    </style>
</resources>

Activity.java

private static void setWindowFlag(Activity activity, boolean on) {
    Window win = activity.getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    if (on) {
        winParams.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    } else {
        winParams.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    }
    win.setAttributes(winParams);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    // Check if the version of Android is Marshmallow or higher
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int newUiOptions = getWindow().getDecorView().getSystemUiVisibility();
        newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

        getWindow().getDecorView().setSystemUiVisibility(newUiOptions
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
    // Check if the version of Android is Lollipop or higher
    else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        setWindowFlag(this, false);
        getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.colorTranslucent));
    }

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

如何将状态栏设置为透明但使导航栏保持黑色? 的相关文章

随机推荐

  • Adobe Air 的推送通知 iOS 本机扩展

    我正在为 Adob e AIR 开发 iOS 本机扩展 它将获取推送通知的设备令牌 不幸的是 我不是那么热心的 Objective C 程序员 我不确定我正在使用的代码是否有问题 它编译没有问题 我可以将扩展与 AIR 一起使用 但看起来注
  • 具有相同 ID 的 HTML 元素

    目前我正在开发一个 喜欢 的新闻提要系统 一页上有多个新闻提要 这意味着有多个具有相同 ID 的 喜欢 按钮 这是我用来喜欢帖子的 jquery document ready function likebutton click functi
  • 将韩文字符转换为实体

    我正在尝试将韩语字符转换为 unicode html 实体 但没有任何运气 我使用这个网站 http www mylanguages org converter php但希望在 php 编码中有类似的东西 text echo htmlent
  • 将 XLSX 文件从每月电子邮件(在 Gmail 中)导入到指定的 Google Sheet

    我定期收到客户发来的 XLSX 文件 我希望自动执行将其从 Gmail 自动标记 导入 Google 表格的过程 到目前为止 我设法使其适用于 CSV 文件 但 XLSX 文件似乎更棘手 有人可以帮助调整我的 CSV 文件代码吗 funct
  • SQLiteDataAdapter 更新方法返回 0

    我从 CSV 文件加载了 83 行 但是当我尝试更新 SQLite 数据库时 我得到 0 行 我不知道我做错了什么 程序输出 Num rows loaded is 83 Num rows updated is 0 源代码是 public v
  • Java,IllegalAccessorError:超类访问检查失败

    我一直在用 Java 开发自己的一个小项目 最近 我编译了它并收到了这个错误 线程 main 中的异常java lang IllegalAccessError 超类访问检查失败 类kr w zeale v1 program core Dat
  • oracle SQL语句中rownum与order by子句结合使用

    以下两个 SQL 语句中哪一个将返回所需的结果集 即 Status 0 且 Starttime 最高的十行 两个语句总是返回相同的结果集吗 开始时间是唯一的 SELECT FROM MyTable WHERE Status 0 AND RO
  • 关闭图形所有子图的轴

    我正在创建大量子图 我想关闭所有子图的轴 目前我正在通过以下方式实现这一目标 fig ax plt subplots 7 len clusters fig subplots adjust wspace 0 top 1 0 bottom 0
  • BAT:基于文件修改日期的 if 语句

    我想查看锁定文件的修改日期是否超过 5 秒前或将来 表明 PC 时钟已改回 我怎么能说 if file modifydate lt now 5 seconds or modifydate gt now 运行命令 a 命令 a 将启动我的 J
  • ServiceController.start() 和 ServiceController.stop() 抛出异常?

    下面的代码抛出异常 我不明白我在代码中犯了什么错误 有人可以帮我弄清楚吗 我认为这是一些担保权问题 如果是这样 我如何向任何用户或应用程序授予以编程方式访问此 Windows 服务的安全权限 Dim sc As New ServiceCon
  • 工具栏中 Android 微调器上的翻转箭头

    我在屏幕底部的工具栏中有一个微调器 但微调器旁边的箭头指向下方 这是违反直觉的 有没有什么快速的方法可以将箭头翻转到向上 如果有帮助的话 微调器的定义如下
  • 如何等待异步完成

    我想运行一些异步工作流程 然后等待它完成后再打印一些结果 例如 let dowork n async do printfn work d n let creatework async for x in 1 5 do Async Start
  • 正则表达式:将 $ 放入 [ ]

    echo tests perl pe s s t g Unmatched in regex marked by lt HERE in m s lt HERE 5 020000 at e line 1 lt gt line 1 我不能放 in
  • 在 Python 中从多列中查找最接近的值并添加到新列

    我有以下数据框 import pandas as pd import numpy as np data index 1 2 3 4 5 A 11 17 5 9 10 B 8 6 16 17 9 C 10 17 12 13 15 target
  • 在功能性 UIScrollView 中使用 UIPanGestureRecognizer 进行平移视图

    问题 我有一个UIScrollView含有一个UIView我希望允许用户使用UIPanGestureRecognizer 为了使其按预期工作 用户应该能够用一根手指平移视图 但是also能够用另一根手指平移滚动视图 两者都可以同时 每个手指
  • 使用 onesignal 向特定用户发送通知

    我在用着一个信号这是我的项目中的第一次 我必须在某些事件上向特定用户 无论用户在 Chrome 或 Android 设备上登录 发送通知 例如 Whatsapp 也会在移动设备和网站上发送通知 并且仅当用户登录时才发送 我已成功向所有人发送
  • 设置 Rails cookie 的开始日期和到期日期

    如何设置 Rails cookie 在特定日期开始和 或过期 摘录自Rails 5 文档 Cookie 是通过 ActionController cookies 读取和写入的 正在读取的 cookie 是与请求一起接收的 cookie 正在
  • 使用正则表达式选择电话号码的变体

    import re s so the 1234 2 1 1919 215 777 9839 1333331234 20 20 2000 A1234567 515 2331129 7654321B 511 231 1134 512 333 1
  • 使用ios将图像转换为gif [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试使用 IOS Xcode 4 5 以编程方式转换 10 张 gif 格
  • 如何将状态栏设置为透明但使导航栏保持黑色?

    正如我的问题所示 我试图弄清楚如何将状态栏颜色设置为透明 同时保持导航栏黑色 自然色 不影响屏幕高度 我参考了这个网站 Android 完全透明的状态栏 部分有效的解决方案之一是 getWindow setFlags WindowManag