首页 > 系统 > Android > 正文

android沉浸式状态栏的实现

2019-11-09 17:56:28
字体:
来源:转载
供稿:网友

项目地址:github 看一下效果图(在android5.0的机器上)

这里写图片描述

这里写图片描述

说明沉浸式在android19以后才能使用,而且在4.4和5.0+的机器上显示略有不同

首先要在主题文件中添加values-v19,然后在style文件中这样写

<?xml version="1.0" encoding="utf-8"?><resources> <style name="APPTheme" parent="@style/BaseAppTheme"> <item name="android:windowTranslucentStatus">true</item> </style></resources>

这是默认style文件(颜色大家自己随意定义)

<resources> <!-- Base application theme. --> <style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPRimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">#FF4081</item> </style> <style name="AppTheme" parent="@style/BaseAppTheme"> </style></resources>

布局文件

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout 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:fitsSystemWindows="true" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.example.administrator.immersivestatusbar.MainActivity"> <LinearLayout android:id="@+id/id_main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/id_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:fitsSystemWindows="true" /> <TextView android:id="@+id/id_tv_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:text="沉浸式状态栏" android:textSize="28sp"/> </LinearLayout> <!--在状态栏下的view必须要设置fitsSystemWindows这个属性--> <android.support.design.widget.NavigationView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/nav_menu" android:fitsSystemWindows="true" android:layout_gravity="start" app:headerLayout="@layout/header_layout" app:menu="@menu/menu_draw" ></android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>

其中抽屉导航栏用到的头布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" //也要设置这个属性 android:fitsSystemWindows="true" android:layout_height="match_parent" android:background="@android:color/holo_orange_dark" xmlns:app="http://schemas.android.com/apk/res-auto" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@mipmap/ic_launcher"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="great_小海海" android:layout_gravity="center" android:textSize="20sp"/></LinearLayout>

菜单文件,在res下新建menu文件夹

<?xml version="1.0" encoding="utf-8"?><menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:title="首页" android:icon="@mipmap/ic_launcher"> </item> <item android:id="@+id/nav_winxin" android:title="微信" android:icon="@android:drawable/ic_menu_search"> </item> <item android:id="@+id/nav_QQ" android:title="QQ" android:icon="@android:drawable/ic_menu_add"> </item> </group> <item android:title="设置中心"> <menu> <item android:icon="@android:drawable/ic_menu_share" android:title="清除缓存"/> <item android:icon="@android:drawable/alert_light_frame" android:title="信息反馈"/> </menu> </item></menu>

在MainActivity中

package com.example.administrator.immersivestatusbar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;public class MainActivity extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.id_toolbar); setSupportActionBar(toolbar); }}

最后贴一张系统颜色定义的作用范围

这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表