将覆盖操作栏与半透明状态栏叠加显示

6
我想要实现这里展示的效果:http://www.youtube.com/watch?v=6QHkv-bSlds&t=15m48s,由Nick和他的团队展示。我可以让操作栏覆盖在上面,但是不知道如何将其扩展到状态栏。我还想知道他们如何管理导航栏后面的透明黑色背景(但这不是最关键的)。希望能得到任何帮助或建议,因为我目前完全不知道这是如何完成的(开始担心它可能只是一张图像而不是实际的实现)。
编辑:我知道如何使栏完全透明(那很容易)!但我不知道如何将操作栏背景扩展到出现在现在半透明的状态栏后面。
3个回答

13

我有同样的问题,找到了这个库: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。我最终做了类似的事情,所以会接受你的答案,让未来的读者参考。 - krishan711
我尝试使用这个库,实际上我想改变状态栏的颜色。但是它没有改变颜色。 - Dory

3

根据Android 4.4 APIs的描述:

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

如果您正在创建自定义主题,请将其中一个主题设置为父主题或在您的主题中包含windowTranslucentNavigationwindowTranslucentStatus样式属性中的两个新属性之一。

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


这会使状态栏透明,但不会将操作栏背景延伸到其后面,因此状态栏具有从黑色到完全透明的渐变效果,然后才是操作栏。 - krishan711
@krishan711 - 是的,它对您的Activity的背景是透明的,并且与操作栏颜色没有任何关联,因此视频具有ActionBar与状态栏具有相同的半透明背景(因此它们看起来像是同一元素),并且包含的主题是NoActionBar主题(通常您不希望Activity的背景在ActionBar之上)。 - ianhanniballake
好的,但是没有API可以设置状态栏的背景吗?而且你似乎自相矛盾...我怎么能在ActionBar上有一个背景并且使用NoActionBar(或者我误解了吗?)。我目前正在使用windowTranslucentStatus标志来实现透明状态栏。 - krishan711
@krishan711 - 所以你想要删除的是黑色->透明的部分吗?他们在视频的17:00处提到,黑色->透明将始终存在。 - ianhanniballake
1
不,我不想把它移除。我想要在视频的15分48秒时展示的效果;也就是说,黑色->透明似乎在一个半透明黑色层之上(z轴而非y轴位置),该层与操作栏颜色相同。 - krishan711
显示剩余2条评论

1
他们正在使用新的半透明系统栏功能(在Android 4.4及以上版本中)。

半透明系统栏

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

如果您正在创建自定义主题,请将其中一个主题设置为父主题或在您的主题中包含windowTranslucentNavigation和windowTranslucentStatus样式属性。


这并不是我想要的(开箱即用)。请看我给@ianhanniballake的评论。 - krishan711

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接