实现沉浸式状态栏和隐藏效果后在CoordinatorLayout 22以前没什么问题,只是体验没有23的好,在升级到23后底部出现了一块空白,只要一滑动就出现,后来根据相关资料总算解决了
先看看布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@android:color/white" android:layout_gravity="center" /> <android.support.design.widget.CoordinatorLayout android:id="@+id/root_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:orientation="vertical" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <LinearLayout android:id="@+id/scroll_toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="vertical" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> //此次去掉相关的代码 </LinearLayout> <android.support.design.widget.TabLayout android:id="@+id/my_attention_and_follow_indicator" android:layout_width="match_parent" android:layout_height="54dp" android:background="@color/white"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/my_atten_and_follow_viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.suppor
这里只要设置toolbar和rootlayot的高度就行
//处理底部的黑块 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setStatusBarColor(getResources().getColor(android.R.color.transparent)); } } int statusBarHeight = SysUtil.getStatusBarHeight(this); if (statusBarHeight > 0) { int sunHeight = statusBarHeight + Utils.dip2px(this, 27); ViewGroup.LayoutParams layoutParams = mToolbar.getLayoutParams(); layoutParams.height = sunHeight; mToolbar.setLayoutParams(layoutParams); View rootLayout = findViewById(R.id.root_layout); rootLayout.setPadding(0, -statusBarHeight * 2, 0, 0); }这里设置是要在状态栏的基础上再加上标题栏的高度
int sunHeight = statusBarHeight + Utils.dip2px(this, 27);
设置好标题栏后再设置android.support.design.widget.CoordinatorLayout的pading值即可