在Fragment中,使用CoordinatorLayout+TabLayout布局,會遇到recyclerview 給遮擋的問題,修改完成,效果圖如下:

一.先上布局代碼
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/white" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/sl_layout" > <android.support.design.widget.AppBarLayout android:id="@id/id_stickynavlayout_topview" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/APPTheme.AppBarOverlay" app:elevation="0.5dp" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/title_bar" android:minHeight="@dimen/title_bar" android:theme="@style/MyToolbar" app:titleTextAppearance="@style/ToolbarTextAppearance.Title" app:layout_scrollFlags="scroll|enterAlways" > <TextView android:textColor="@color/white" android:id="@+id/textView_toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:ellipsize="end" android:singleLine="true" android:textSize="20sp" tools:text="首頁" /> </android.support.v7.widget.Toolbar> <RelativeLayout android:background="@color/white" android:padding="12dp" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways" > <ImageView android:id="@+id/iv_head" android:src="@mipmap/zh_touxiang" android:layout_width="80dp" android:layout_height="80dp" /> <TextView android:textColor="@color/text_title" android:paddingLeft="12dp" android:layout_centerVertical="true" android:layout_toRightOf="@id/iv_head" android:text="等級 : 總代理" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:textColor="@color/cl_default" android:gravity="center" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:text="我要升級" android:layout_width="80dp" android:layout_height="30dp" /> </RelativeLayout> <android.support.design.widget.TabLayout android:id="@id/id_stickynavlayout_indicator" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff" app:tabGravity="fill" app:tabMode="fixed" app:tabTextColor="#A2A2A2" app:tabIndicatorColor="@color/white" app:tabSelectedTextColor="#000000" > </android.support.design.widget.TabLayout> </android.support.design.widget.AppBarLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:scrollbars="none" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <!--appbar_scrolling_view_behavior--> <android.support.v4.view.ViewPager android:background="#fff" android:id="@id/id_stickynavlayout_viewpager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> </LinearLayout></android.support.design.widget.CoordinatorLayout>本項目用的recylerview是封裝了上拉加載和下拉刷新的SuperRecyclerView,這樣會造成列表會給底部的tab遮擋,解決方案如下:
1.在tablyout的fragment中,加入設置recylerview的邊距代碼
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ry_PRimary.getLayoutParams(); params.setMargins(0,0,0, DensityUtils.dp2px(mContext,60)); ry_primary.setLayoutParams(params);這樣會讓recylerview的item顯示正常,第二次切換的時候,在重新把邊距設置為0,就不會出現,recylerview距離底部有距離的情況。2.第二種方式比較簡單,直接給SuperRecyclerView添加下拉刷新,就能解決item給tab遮擋的問題ry_primary.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { lists.clear(); for (int i=0; i < 10; i++){ lists.add(" " + i); } adapter.setData(lists); } });
新聞熱點
疑難解答