84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我想在5.0 或者4.4 操作系统都实现沉淀式状态栏或透明状态栏,最好全部都采用style 的方式实现,最好不用这个开源库https://github.com/jgilfelt/SystemBarTint求解决思路
经过这几天的思考和研究,发现使用ActionBar,和不使用ActionBar,改为Toolbar 效果完全是不一样的,那在这两种情况下是否都可以完美的实现呢
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
对于top view, 可以用style,
<style name="TopViewStyle"> <item name="android:fitsSystemWindows">true</item> <item name="android:clipToPadding">true</item> </style>
但window flag还是需要代码做版本支持判断的,
getWindow().addFlags(WindowManager.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 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); } } }
自己的解决方案:https://coding.net/u/tianshaokai/p/MaterialDesignDemo/git低版本实现Material Design 的两种方式https://github.com/Witype/SystemBarTintDemohttps://github.com/Witype/ToolbarStatusDemo
实现状态栏沉浸非常简单,而且只需要通过style配置在 values-v19 下的 styles.xml 里定义如下主题,并在 Manifest.xml 里将应用主题确定为这个主题即可。
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 表示导航栏(虚拟按键栏)透明
android:windowTranslucentStatus
android:windowTranslucentNavigation
沉浸是小事,关键麻烦在对 layout 布局里的改动,fitsSystemWindows 的优化,凭经验告诉你,SystemBarTint已经算是最简单的解决方案。
layout
fitsSystemWindows
对于top view, 可以用style,
但window flag还是需要代码做版本支持判断的,
是没法在style中表示的,style自己做不了版本标识区别。
activity_main.xml
MainActivity.java
自己的解决方案:https://coding.net/u/tianshaokai/p/MaterialDesignDemo/git
低版本实现Material Design 的两种方式
https://github.com/Witype/SystemBarTintDemo
https://github.com/Witype/ToolbarStatusDemo
实现状态栏沉浸非常简单,而且只需要通过style配置
在
values-v19
下的styles.xml
里定义如下主题,并在Manifest.xml
里将应用主题确定为这个主题即可。android:windowTranslucentStatus
表示状态栏透明android:windowTranslucentNavigation
表示导航栏(虚拟按键栏)透明沉浸是小事,关键麻烦在对
layout
布局里的改动,fitsSystemWindows
的优化,凭经验告诉你,SystemBarTint已经算是最简单的解决方案。