android 状态栏透明 android设置状态栏图片( 二 )


但是也要知道一点 。那个红色的TextView,原来是紧贴着状态栏 。现在是紧贴着屏幕的上边缘 。这样就导致 。内容被遮挡 。解决这个问题需要一个关键的属性是setFitSystemWindow=true 。追踪源码可知 。它可以让我们的布局 。paddingTop等于状态栏的高度 。这样红色TextView的位置就会向下移 。从而不会被遮挡 。
3.半透明状态栏,fitSystemWindows=true@Overridepublicvoidinit(BundlesavedInstanceState){setHalfTransparent();setFitSystemWindow(true);}

android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
此时红色的TextView 。位于状态栏下方 。
4.全透明状态栏,fitSystemWindows=falsesetStatusBarFullTransparent();setFitSystemWindow(false);
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
全透明和半透明的区别在于 。状态栏是否具有淡黑色的背景 。根据项目需求合理运用 。
5.全透明状态栏,fitSystemWindows=truesetStatusBarFullTransparent();setFitSystemWindow(true);
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
6.DrawerLayout如何使用直接使用上述方式 。在4.4系统上会出现异常 。因此我们需要进行适配 。
修改xml文件 。DrawerLayout需要添加fitsSystemWindows和clipToPadding属性 。DrawerLayout布局里的一级布局 。都需设置fitsSystemWindows=true 。
<?xmlversion="1.0"encoding="utf-8"?><android.support.v4.widget.DrawerLayoutandroid:id="@+id/drawerLayout"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:fitsSystemWindows="true"android:clipToPadding="false"android:layout_height="match_parent"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:fitsSystemWindows="true"android:background="@drawable/bg_start"android:orientation="vertical"><Buttonandroid:id="@+id/button"android:layout_width="100dp"android:layout_height="wrap_content"android:background="#F86254"android:text="show"android:textColor="@color/white"/></RelativeLayout><FrameLayoutandroid:id="@+id/sideLayout"android:layout_width="300dp"android:fitsSystemWindows="true"android:layout_height="match_parent"android:layout_gravity="end"android:background="@drawable/bg_test"><Buttonandroid:layout_width="100dp"android:layout_height="30dp"android:background="#F86254"android:text="button"android:textColor="@color/white"/></FrameLayout></android.support.v4.widget.DrawerLayout>
(1).全透明状态栏 。fitsSystemWindows=false
setStatusBarFullTransparent();
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
(2).DrawerLayout全透明状态栏 。fitsSystemWindows=true
setStatusBarFullTransparent();setDrawerLayoutFitSystemWindow();
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
7.可能会错误的地方本来我们有一个界面:
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
然后按照上面的 。添加了代码之后
setStatusBarFullTransparent();setFitSystemWindow(true);
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
然后你提刀来问楼主 。这是什么鬼!!!
说好的透明状态栏呢 。怎么状态栏背景色是白色的!
android 状态栏透明 android设置状态栏图片

文章插图

android 状态栏透明 android设置状态栏图片

文章插图
确实是全屏了 。状态栏也透明了 。只是由于 。根布局没设置背景色 。默认的背景色白色 。所以你看到的灰色状态栏底色 。其实是根布局的TopPadding 。

推荐阅读