Android设置透明ActionBar与状态栏时出现ActionBar与背景异常边框
问题根源
你看到的那条分隔线和颜色配置没关系,是AppCompat ActionBar默认带的高程阴影。另外你主题里已经写了windowActionBar=false、windowNoTitle=true关了系统ActionBar,代码里还在调用supportActionBar改配置,本身逻辑就冲突,很容易出显示异常。
修复步骤
- 去掉ActionBar自带阴影
要是你暂时不想改现有ActionBar的用法,直接在给ActionBar设透明背景的代码后面加一行,把高程设为0就能消掉底部的阴影分隔线:actionBar?.elevation = 0f - 换掉过时的透明系统栏写法
别用FLAG_TRANSLUCENT_NAVIGATION这个标记,这是很早之前的沉浸式方案,开了之后系统会直接把内容布局顶到导航栏底下,你碰到的文本跑到设置图标旁边的问题就是这么来的。正确的边到边显示配置直接写到backGroundColour()方法里就行:
写完之后给页面根布局加个WindowCompat.setDecorFitsSystemWindows(window, false) window.statusBarColor = Color.TRANSPARENT window.navigationBarColor = Color.TRANSPARENTandroid:fitsSystemWindows="true"属性,系统会自动给布局留出状态栏、导航栏的安全距离,不会再出现控件错位。 - 改下背景的设置方式
别给window直接设渐变背景,把gradient_background直接设成Activity根布局的background,避免好几层背景叠在一起出奇怪的色差。 - 清理冗余配置
既然你主题里已经关了默认ActionBar,更推荐直接在布局里放Toolbar自己实现标题栏,手动inflate菜单,样式可控性高很多,不会被系统控件自带的默认效果坑。
补充
你之前试的Color.parseColor("#00FFFFFF")和Color.TRANSPARENT效果完全一样,不用在这两个值上反复试,那条线和颜色透明度没有关系。
内容的提问来源于stack exchange,提问作者Joe Pleavin
相关产品推荐
相关产品推荐

