android 沉浸式状态栏的实现

时间:2023-12-22 13:59:56

本文介绍一种简单的实现沉浸式状态栏的方法,要高于或等于api19才可以。

android 沉浸式状态栏的实现

实现android沉浸式状态栏很简单,添加代码两步就可以搞定。

一.在activity中添加

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明状态栏

例如:

 public class MainActivity extends AppCompatActivity {

     private RadioGroup rg;

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); rg=(RadioGroup)super.findViewById(R.id.rg); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } }

二. 我们要达到这种效果一般使用的是NoActionBar,所以在最顶部的控件代码里添加

android:fitsSystemWindows="true"
android:clipToPadding="true"

例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:orientation="vertical">
<TextView
android:fitsSystemWindows="true"
android:clipToPadding="true" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f00"
android:text="android沉浸式状态栏"
android:textSize="25sp"/>

注意:

1.如果我们不在xml中添加代码,就会造成控件和状态栏重合的情况

android 沉浸式状态栏的实现

2.如果我们在上述代码中的LinearLayout中添加代码,会造成状态栏是LinearLayout的背景色,我设置的是#fff白色

android 沉浸式状态栏的实现

所以只需要在最上方的控件中添加代码即可

android 沉浸式状态栏的实现