android - 更改 Android 应用程序的状态栏颜色但保持半透明

标签 android android-5.0-lollipop android-design-library androiddesignsupport

对于我正在构建的应用程序,我使用了 Design Support Library . 我创建了一个使用 TabLayout 的应用程序。该应用程序的一个小功能是,当用户更改选项卡时,TabLayoutToolbar 的颜色都会更改为相应的颜色。我们还使用新的 NavigationView,为用户呈现 Material 设计的 DrawerLayout

但是,改变TabLayoutToolbar 的颜色是完全没有问题的,我们按照下面的行来做;

String hexColor = String.format("#%06X", (0xFFFFFF & getResources().getColor(R.color.primaryColor)));
getBaseActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
mTabLayout.setBackgroundColor(getResources().getColor(primaryColor));

这一切都很好,而且工作正常。当我尝试设置 Status bar 背景时出现问题。由于 Material 设计规范告诉我们 NavigationDrawer 应该得到一些特殊处理,下图显示了状态栏实际上是一种半透明形式。 Navigation Drawer 落在我的主要 fragment 上,而导航栏在两者之上,是一个半透明的栏。

What it should look like

我的第一个想法是,它只是一个具有 #7000 十六进制值或类似值的条,但事实并非如此。这样做不会改变它应该“变暗”的实际颜色的颜色。

之后,我只是尝试将所需颜色的较暗版本设置为状态栏的背景;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getBaseActivity().getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.primaryColor));
}

但是在这样做之后,完整的功能就中断了。我的 View 将如下所示:

enter image description here

本质上,我可以做些什么来解决这个问题?我真的很想更改它,以便半透明功能仍然根据 Material 设计规范执行它需要执行的操作,同时更改 status bar 的背景颜色。

最佳答案

我认为它背后总是有一个半透明的阴影,你无法将其移除。因此,您可以尝试使用颜色 alpha channel 来获得可接受的结果,或者考虑这样的解决方案: 据我所知,您只是希望抽屉导航打开时状态栏的颜色略有不同,对吗?那么为什么不在 NavigationDrawer 布局中添加一个具有所需颜色和与状态栏相同高度的空 View 来实现相同的效果呢?

顺便说一句,有一个 R.dimen.status_bar_height 高度规范。

关于android - 更改 Android 应用程序的状态栏颜色但保持半透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31381909/

相关文章:

android - border-radius 在现代原生 Android 浏览器中不起作用

android - 检查查看器以在 Android Lollipop 中打开文件

android - 在 TextInputLayout 中更改单个字母或字母表的提示颜色

android:layout_height ="?attr/actionBarSize"不适用于 support:design:23.0.0' 库

android - 工具栏上的图标不会打开抽屉导航,并且在滚动时不会自行消失

java - 监控 BufferedInputStream 下载进度

android - LogCat中的 "mWifiServiceMessenger == null"异常意味着什么?

java - 如何在android中为联系人添加新字段

android - "@android:style/TextAppearance.StatusBar.EventContent.Title"在 android L 中将颜色设置为白色而不是灰色

android - Eclipse 中未生成 MainActivity 类?