Xamarin Forms Android 状态栏文本颜色设置
背景:近期需要做一个电商系统,包含PC跟移动App,我是个net后端开发,ios跟android原生开发显得有点吃力,想到了夸平台开发,有用过uniapp开发过线上App且正常运营,但是总觉得跟原生组件应用还是差一截,Xamarin 是从发布的时候一直在关注,但是苦于国内没有比较好的开发环境一直是搁浅状态,没有实际应用,这次的项目不是特别急,所以选择了慢慢学习摸索Xamarin
过程:UI开发是移动端的难点,起初配置基础的界面就遇到了一个问题,App的设计图是白色+黑色为搭配主色调,导航卡都是白色的,那么就需要状态栏的文本是黑色的才能正常显示,且国内的App基本上都是沉浸式效果,于是翻阅了好多国内资料,不知道是不是因为版本的问题,基本上所有的调整都是起不到一点点作用,于是翻阅很多外国网站也是无果,但是在翻阅过程中,有些特有的属性自己看的多也就慢慢的总结了出来
开发:
1、首先实现沉浸式效果,在android项目下的MainActivity OnCreate方法内base.OnCreate之前添加如下代码:
1 var uiOpts = SystemUiFlags.LayoutStable | SystemUiFlags.LayoutFullscreen; 2 //LayoutStable表示布局稳定,不随其他变动而变动 3 //LayoutFullscreen表示把布局拓宽到全屏幕 4 5 Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOpts; 6 //把标题栏设置为透明色 7 Window.SetStatusBarColor(Android.Graphics.Color.Argb(0, 0, 0, 0));
这样即可达到状态栏透明效果,导航栏+状态栏根据你设定的主色调进行着色,那么状态栏你会发现依旧是白色的

2、调整修改状态栏文本颜色
但是达到了沉浸式效果,如果你的主色调是深色那么你基本上可以直接用上面的代码不用修改任何东西,但是我的App设计是白色的导航栏,那么就需要修改导航栏内文本的颜色,怎么设置呢?这个也是我翻阅了很多资料都没找到结果的,也许是因为是刚入坑,哪个姿势不对,于是想到了很多的App偏系统的配置都是在SystemUiVisibility里面,于是想到了上面代码设置沉浸式的时候有个枚举SystemUiFlags,于是找到了个StatusBar的属性LightStatusBar,看这个枚举词大概的意思是高亮的状态栏,于是代码修改:
var uiOpts = SystemUiFlags.LayoutStable | SystemUiFlags.LayoutFullscreen | SystemUiFlags.LightStatusBar;
//LayoutStable表示布局稳定,不随其他变动而变动
//LayoutFullscreen表示把布局拓宽到全屏幕
Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOpts;
//把标题栏设置为透明色
Window.SetStatusBarColor(Android.Graphics.Color.Argb(0, 0, 0, 0));
注意红色部分的枚举,设置好重新运行终于达到了我要的效果

结语:刚开始入坑很多都还不懂,但是自己在入坑过程遇到的问题,我会都总结到园内,给后面入坑的同学也是一点帮助

浙公网安备 33010602011771号