gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:25 25 4
gpt4 key购买 nike

对于我正在构建的应用程序,我使用了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com