让Android 5.0, 4.4 系统都实现沉淀式状态栏或透明状态栏的方法
高洛峰
高洛峰 2017-04-17 15:26:15
0
3
679

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(3)
PHPzhong

For top view, you can use style,

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

But the window flag still requires code to determine version support,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

cannot be expressed in style, and style itself cannot make the difference in version identification.

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 onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

}
阿神

My own solution: https://coding.net/u/tianshaokai/p/MaterialDesignDemo/git
Two ways to implement Material Design in lower versions
https://github.com/Witype/ SystemBarTintDemo
https://github.com/Witype/ToolbarStatusDemo

Peter_Zhu

It is very simple to implement status bar immersion, and you only need to define the following theme in
under values-v19 through style configuration styles.xml, and determine the application theme as this theme in 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 means the status bar is transparent
android:windowTranslucentNavigation means the navigation bar (virtual button bar) is transparent

Immersion is a trivial matter. The key trouble lies in the changes in the layout of layout and the optimization of fitsSystemWindows.
I tell you from experience that SystemBarTint is already the simplest solution.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template