美文网首页5.0
Android状态栏着色(非沉浸式状态栏)

Android状态栏着色(非沉浸式状态栏)

作者: 特大碗牛肉面 | 来源:发表于2017-06-12 16:00 被阅读784次

由于产品需求 , 要将一级页面的5个Fragment设置不一样颜色的状态栏; 然后我对着网上的博文抄了一遍 ,发现兼容问题很差 , 要么就是顶部的状态栏没有实现全屏 , 要么就是底部的虚拟按钮遮挡导航栏(华为手机和小米手机), 最后自定义主题和设置xml布局顶部高度来解决了这个问题;
解决方案:

第一步.在values的styles中自定义主题:

   <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/personal_center</item>
        <item name="colorPrimaryDark">@color/personal_center</item>
        <item name="colorAccent">@color/auxiliary_color</item>
</style>

<style name="YRTranslucentTheme" parent="AppTheme">
</style>

第二步.创建values-v19文件夹和styles.xml:

<style name="YRTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
</style>

第三步.创建values-v21文件夹和styles.xml:

<style name="YRTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <!--<item name="android:statusBarColor">@android:color/transparent</item>-->
</style>

第三步.引用主题:

 <activity
            android:name=".module.homepage.activity.MainActivity"
            android:screenOrientation="portrait"
            android:theme="@style/YRTranslucentTheme"
            android:windowSoftInputMode="stateHidden|adjustPan"/>

第四步.Fragment 状态栏填充颜色:(如果一节界面的头部是轮播图直接预留20dp的高度)
不设置预留高度,状态栏会和toolbar叠加在一起 (状态栏在toolbar上方)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
    >

    <View
        android:id="@+id/view_top"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_alignParentTop="true"
        android:background="@color/red"/>

    <android.support.v7.widget.Toolbar
        android:id="@+id/tb_back"
        style="@style/toolbar_state_setting"
        android:background="@color/white">

        <TextView
            style="@style/toolbar_title"
            android:text="@string/my_setting"
            android:textColor="@color/red"
            android:textSize="18dp"/>

    </android.support.v7.widget.Toolbar>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="@color/white"
        android:orientation="vertical">

    ......

运行后效果图如下:

轮播图在顶部的时候直接预留状态栏的高度即可:

首页顶部为轮播图的界面

指定颜色的界面设置多一层有颜色的View:

其他指定颜色的界面

相关文章

  • “沉浸式状态栏”

    “沉浸式状态栏” (严格的来说可分为入侵式状态栏和着色状态栏)。 注:android 4.4 之后才支持对状态栏操...

  • Android 沉浸式风格(为毛叫沉浸式这么唬人)

    一、参考 1、Android 沉浸式状态栏攻略 让你的状态栏变色吧2、android设置状态栏颜色(沉浸式状态栏)...

  • Android沉浸式状态栏

    什么是沉浸式状态栏 沉浸式状态栏本质上就是给系统状态栏着色。当这个颜色和我们Activity中的ToolBar或者...

  • 沉浸式状态栏

    何谓沉浸式状态栏## 说白了,沉浸式状态栏本质上就是给系统状态栏着色。当这个颜色和我们Activity中的Tool...

  • android沉浸式状态栏

    android沉浸式状态栏 参考文章 另外两种android沉浸式状态栏实现思路 android4.4+实现MD状...

  • 初试状态栏"沉浸"

    Android状态栏颜色修改 名称纠结 参考了一系列的文章,开头都会阐述一下沉浸式状态栏和状态栏着色的区别。这里我...

  • AndroidView

    Android 沉浸式 (透明) 状态栏适配 Android 沉浸式状态栏仿淘宝、京东拖拽商品详情(可嵌套View...

  • android沉浸式状态栏 轻量 简便

    android沉浸式状态栏 android 沉浸式状态栏 网上看了很多沉浸式,感觉用起来麻烦,而且有些库非常大,于...

  • 另外两种android沉浸式状态栏实现思路

    关于沉浸式状态栏相信大家都不陌生,IOS系统很早就有,android5.0及以后版本都支持给状态栏着色,而目前an...

  • 另外两种android沉浸式状态栏实现思路

    关于沉浸式状态栏相信大家都不陌生,IOS系统很早就有,android5.0及以后版本都支持给状态栏着色,而目前an...

网友评论

本文标题:Android状态栏着色(非沉浸式状态栏)

本文链接:https://www.haomeiwen.com/subject/pzvlqxtx.html