让Android 5.0, 4.4 系统都实现沉淀式状态栏或透明状态栏的方法
bwin官网
bwin官网
当前位置 : bwin官网 > bwin必赢亚洲官网注册

让Android 5.0, 4.4 系统都实现沉淀式状态栏或透明状态栏的方法

我想在5.0 或者4.4 操作系统都实现沉淀式状态栏或透明状态栏,最好全部都采用style 的方式实现,最好不用这个开源库https://github.com/jgilfelt/SystemBarTint求解决思路

经过这几天的思考和研究,发现使用ActionBar,和不使用ActionBar,改为Toolbar 效果完全是不一样的,那在这两种情况下是否都可以完美的实现呢

对于top view, 可以用style,

<style name="TopViewStyle">
    <item name="android:fitsSystemWindows">true</item>
    <item name="android:clipToPadding">true</item>
</style>

但window flag还是需要代码做版本支持判断的,

getWindow.addFlagsWindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

是没法在style中表示的,style自己做不了版本标识区别。

activity_main.xml

<?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:layout_height="match_parent">
    <TextView
        android:id="@+id/top_text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/TopViewStyle"/>
    <TextView
        android:id="@+id/example_text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreateBundle savedInstanceState {
        super.onCreatesavedInstanceState;
        setContentViewR.layout.activity_main;
        if Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT {
            getWindow.addFlagsWindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        }
    }

}

实现状态栏沉浸非常简单,而且只需要通过style配置
values-v19 下的 styles.xml 里定义如下主题,并在 Manifest.xml 里将应用主题确定为这个主题即可。

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

android:windowTranslucentStatus 表示状态栏透明
android:windowTranslucentNavigation 表示导航栏(虚拟按键栏)透明

沉浸是小事,关键麻烦在对 layout 布局里的改动,fitsSystemWindows 的优化,
凭经验告诉你,SystemBarTint已经算是最简单的解决方案。

广告位

bwin官网