Android 状态栏透明、自定义状态栏颜色设置
来源:互联网 发布:600d套机拍摄淘宝图 编辑:程序博客网 时间:2024/04/29 17:01
系统是4.4及以上的系统,支持设置透明的状态栏和导航栏。
代码中实现:
if(VERSION.SDK_INT >= VERSION_CODES.KITKAT){getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //透明导航栏 }
也可在Style.xml 中实现:
<style name="AppBaseTheme"parent="android:Theme.Holo.Light.DarkActionBar"> <!-- API 19 theme customizations can go here. --><item name="android:windowTranslucentStatus">true</item> //透明状态栏 <item name="android:windowTranslucentNavigation">true</item> //透明导航栏 </style>
但是 设置了这两个属性之后,布局里面的view会自动向上偏移;
内容就会显示在透明状态栏下面。
为了防止这种现象,可以在主题(Style)中添加如下属性:
<item name="android:fitsSystemWindows">true</item>
自定义状态栏颜色
设置状态栏透明之后,我希望进而动态自定义状态栏的颜色。
通过往 Window 窗口的 decorView 添加一个 View , 让它大小与系统状态栏一样,然后设置这个view的背景,就可以实现修改状态栏颜色的效果了。
代码如下:
private void setStatusBarColor(int color){ ViewGroup decorViewGroup = (ViewGroup) window.getDecorView(); View statusBarView = new View(window.getContext()); int statusBarHeight = getStatusBarHeight(window.getContext());//获取状态栏高度(自定义函数 见下文) FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, statusBarHeight); params.gravity = Gravity.TOP; statusBarView.setLayoutParams(params); statusBarView.setBackgroundColor(color); decorViewGroup.addView(statusBarView);}
获取状态栏高度:
private static int getStatusBarHeight(Context context) { int statusBarHeight = 0; Resources res = context.getResources(); int resourceId = res.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { statusBarHeight = res.getDimensionPixelSize(resourceId); } return statusBarHeight;}
然后调用 setStatusBarColor(int color)即可实现目标功能!
以上内容基于以下开源项目,各位看官可以直接引用即可完美实现:
在项目的build.gradle中声明以下依赖:
compile ‘com.githang:status-bar-compat:0.3’在你的Activity中(最好是setContentView()被调用之后)添加以下代码:
StatusBarCompat.setStatusBarColor(this, color, (boolean) lightStatusBar );
阅读全文
0 0
- Android 状态栏透明、自定义状态栏颜色设置
- Android自定义状态栏颜色、状态栏透明
- Android设置状态栏透明与设置状态栏字体颜色Mode
- 设置android 状态栏透明
- android设置状态栏透明
- android设置透明状态栏
- Android设置透明状态栏
- Android 沉浸式状态栏,状态栏颜色透明
- Android给Activity状态栏设置自定义颜色
- android自定义状态栏颜色
- Android自定义状态栏颜色
- android 自定义状态栏颜色
- Android自定义状态栏颜色
- Android自定义状态栏颜色
- android:初始化状态栏颜色透明
- Android设置状态栏颜色
- android设置状态栏颜色
- Android 设置状态栏颜色
- hihoCoder太阁最新面经算法竞赛题解(1)
- [LeetCode] 451. Sort Characters By Frequency
- 【Bzoj4448】情报传递
- js_arguments对象
- WDM驱动
- Android 状态栏透明、自定义状态栏颜色设置
- 基于惯性大水滴滴水算法和支持向量机的验证码识别
- [Spark]Shark, Spark SQL, Hive on Spark以及SQL On Spark的未来
- Contest_5 0616 By lhq
- MacOS破解必须的命令,允许任何来源安装!
- 九度oj-1045-白鸡问题
- 动态规划
- CFont字体
- BZOJ 1895 & POJ 3580 supermemo[SPLAY]【数据结构】