对于我正在构建的应用程序,我使用了Design Support Library。我创建了一个使用TabLayout
. 该应用程序的一个小功能是,当用户更改选项卡时,两者的颜色都会TabLayout
更改Toolbar
为相应的颜色。我们还使用新的NavigationView
, 向用户展示 Material design DrawerLayout
。
但是,改变 theTabLayout
和 the的颜色Toolbar
完全没有问题,我们在下面的几行中进行;
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
背景时出现问题。由于材料设计规范告诉我们NavigationDrawer
应该进行一些特殊处理,下图显示状态栏实际上是一种半透明形式。导航抽屉落在我的主要片段上,而导航栏在两者之上,是一个半透明的栏。
我的第一个想法是它只是一个带有 #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));
}
但是在这样做之后,完整的功能就会中断。我的视图将如下所示:
本质上,我能做些什么来解决这种行为?我真的很想改变它,以便半透明功能仍然可以根据材料设计规范做它需要做的事情,但也改变了status bar
背景颜色。