Android沉浸式状态栏的简单实现
作为一个小菜鸟,开发过程中遇到不会的问题,总是去网上找各种demo。由于本人比较懒,所以一般没有做笔记的习惯,可是每次遇到相同问题时都要去找博客,感觉很麻烦,所以就抽空闲时间把自己开发过程中遇到的一些问题和大家分享一下,既可以记笔记又能帮助小伙伴们,这不是一举两得吗O(∩_∩)O哈哈~。本人开发时间不太长,可能考虑问题不是太全面,希望各位大神们给出合理的意见啊
由于最近需要做沉浸式状态栏,找了好多种方法感觉都太罗嗦,看半天都不知道是干什么的(可能是我的能力不够^_^),于是就结合网上提供的方法和我自己的想法做了一个,结废话不多说,直接上效果
通过效果图,大牛们可能已经看出我是怎么做的了,没错就是用一个控件填充到状态栏处,这样做处理起来不是太麻烦,只需要使用一个ImageView、TextView或者一块layout来填充你想要的状态栏颜色,这里我用的是系统的粉红色。注意:需要在要填充的控件里加上最关键的两行代码:
android:clipToPadding="true"
android:fitsSystemWindows="true"
这两行代码作用是防止下面的布局跑到状态栏,就是这地儿哥们占了,你们爱哪玩哪玩,要不然下面的布局跑上来多不和谐。
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:clipToPadding="true"
android:fitsSystemWindows="true"
/>
activity中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.text);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 设置状态栏透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 获得状态栏高度
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = getResources().getDimensionPixelSize(resourceId);
//将textview的高度改为和状态栏的高度
textView.setHeight(statusBarHeight);
}
}
虽然看起来很挫,但是用起来还是很好用的,可以填充一块布局或者整个填充,如果你只想在某一块实现沉侵式状态栏,只需在要实现的界面填充,实用性还是比较强的O(∩_∩)O~,如果大家有好的建议可以再下方留言,欢迎大家多提意见。