【问题标题】:Overlay action bar with a translucent status bar使用半透明状态栏覆盖操作栏
【发布时间】:2013-11-05 21:13:36
【问题描述】:

我正在尝试实现此处显示的效果:http://www.youtube.com/watch?v=6QHkv-bSlds&t=15m48s,由 Nick 和男孩们设计。我可以覆盖操作栏,但无法弄清楚如何将其扩展到状态栏。我还想知道他们如何管理导航栏后面的透明黑色背景(但这并不重要)。

任何帮助/建议将不胜感激,因为我目前不知道这是如何完成的(并且开始担心它可能只是一个图像而不是实际实现)。

编辑:我知道如何使条完全透明(这是最简单的部分)!我不知道如何扩展操作栏背景以显示在现在半透明的状态栏后面

【问题讨论】:

    标签: android android-actionbar android-4.4-kitkat


    【解决方案1】:

    我有同样的问题,发现了这个库:https://github.com/jgilfelt/SystemBarTint

    看看第 300 行: https://github.com/jgilfelt/SystemBarTint/blob/master/library/src/com/readystatesoftware/systembartint/SystemBarTintManager.java

    setupStatusBarView() 为窗口的装饰添加一个视图。这允许您稍后为此视图设置颜色/可绘制对象。

    如果使用 SystemBarTint 库,以下将允许您将状态栏强制为指定颜色,然后您可以将其与操作栏的背景相匹配:

    SystemBarTintManager tintManager = new SystemBarTintManager(this);
    tintManager.setStatusBarTintEnabled(true);
    tintManager.setStatusBarTintColor(Color.parseColor("#DD000000"));
    

    在这种情况下,您可以将操作栏的背景设置为:#DD000000

    【讨论】:

    • 感谢 Tanner 的回复,我最终做了一些非常相似的事情,所以会接受你的回答供未来的读者参考。
    • 我尝试使用这个库,实际上我想改变状态栏的颜色。但它并没有改变颜色。
    【解决方案2】:

    Android 4.4 APIs中所述:

    您现在可以使用新主题 Theme.Holo.NoActionBar.TranslucentDecorTheme.Holo.Light.NoActionBar.TranslucentDecor 使系统栏部分半透明。通过启用半透明系统栏,您的布局将填充系统栏后面的区域,因此您还必须为不应被系统栏覆盖的布局部分启用fitsSystemWindows

    如果您要创建自定义主题,请将这些主题之一设置为父主题或在您的主题中包含 windowTranslucentNavigationwindowTranslucentStatus 样式属性。

    在您的情况下(您需要操作栏),第二个选项 - 包括主题中的两个新属性 - 将为您提供半透明的导航和状态栏。

    【讨论】:

    • 这使状态栏透明但不会扩展其后面的操作栏背景,因此状态栏有一个从黑色到完全透明的渐变,然后操作栏开始。
    • @krishan711 - 是的,它对您的 Activity 的背景是透明的,并且根本与 Action Bar 颜色无关,因此视频的 ActionBar 与状态栏具有相同的半透明背景(所以它们看起来是同一个元素)以及为什么包含的主题是NoActionBar 主题(通常你不希望你的活动的背景在ActionBar之上)。
    • 好的,但是没有设置状态栏背景的api吗?您似乎也自相矛盾..我如何在操作栏上有背景并使用 NoActionBar (或者我误解了?)。我目前正在使用windowTranslucentStatus标志来实现透明状态栏。
    • @krishan711 - 两件事:1) 没有设置状态栏背景的 API - 您可以通过半透明状态栏或默认的实心状态栏获得 Activity 背景 2) 给定 1),将 ActionBar 背景与状态栏相匹配的唯一选择是使 ActionBar 也是半透明的。
    • 不,我不想删除它。我想要视频中15m 48s时间的效果;也就是说 - 黑色 -> 透明似乎在(z 索引而不是 y 位置)与操作栏颜色相同的半透明黑色层之上。
    【解决方案3】:

    他们正在使用新的 Translucent system bars 功能(在 Android 4.4 及更高版本上)。

    半透明系统栏

    您现在可以使用新功能使系统栏部分半透明 主题,Theme.Holo.NoActionBar.TranslucentDecor 和 Theme.Holo.Light.NoActionBar.TranslucentDecor。通过启用半透明 系统栏,您的布局将填充系统栏后面的区域,所以 您还必须为您的布局部分启用 fitSystemWindows 不应该被系统栏覆盖。

    如果您要创建自定义主题,请将这些主题之一设置为 父主题或包含 windowTranslucentNavigation 和 主题中的 windowTranslucentStatus 样式属性。

    【讨论】:

    • 这不是我想要的(开箱即用)。请查看我对@ianhanniballake 的评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多