关于透明状态栏(沉浸式状态栏)大家应该都有用过,从Android 4.4开始新加入的windowTranslucentStatus
属性可以将StatusBar
设置为透明,即在v19
的style.xml
中添加
1
| <item name="android:windowTranslucentStatus">true</item>
|
之后布局的内容会顶到顶栏。但是这种情况下ActionBar
也会被顶栏遮挡,如图:
此时有两种解决方法,一是给根布局添加android:fitsSystemWindows="true"
属性,将StatusBar
空出来。但是。。。
咳,大概是打开的方式不对,换种方式再来。
0x0 开启透明
新建一个styles.xml(v19)
,添加windowTranslucentStatus
属性,这条属性即开启状态栏透明。
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0" encoding="utf-8"?> <resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowTranslucentStatus">true</item> </style> </resources>
|
0x1 添加一个statusView
在根布局的顶部添加一个View
,高度为25dp
1 2 3 4
| <View android:id="@+id/status_bar" android:layout_width="match_parent" android:layout_height="25dp"/>
|
0x2 代码中判断版本
当目标版本不低于v19时,将view隐藏,防止在低版本出现重复
1 2 3 4 5 6 7 8 9 10 11
| @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); View statusBar = findViewById(R.id.status_bar); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { statusBar.setVisibility(View.VISIBLE); }else{ statusBar.setVisibility(View.GONE); } }
|