CoordinatorLayout+TabLayout在Fragment中使用遇到的问题
2017-02-05 16:15
471 查看
在Fragment中,使用CoordinatorLayout+TabLayout布局,会遇到recyclerview给遮挡的问题,修改完成,效果图如下:
一.先上布局代码
<?xmlversion="1.0"encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayoutxmlns: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.LayoutParamsparams=(LinearLayout.LayoutParams)ry_primary.getLayoutParams();
params.setMargins(0,0,0,DensityUtils.dp2px(mContext,60));
ry_primary.setLayoutParams(params);
一.先上布局代码
<?xmlversion="1.0"encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayoutxmlns: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.LayoutParamsparams=(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(newSwipeRefreshLayout.OnRefreshListener(){
@Override
publicvoidonRefresh(){
lists.clear();
for(inti=0;i<10;i++){
lists.add(""+i);
}
adapter.setData(lists);
}
});
相关文章推荐
- 高斯消元法(高斯·约当消元法)(整数)
- 设计模式——命令模式
- leetcode_middle_19_378. Kth Smallest Element in a Sorted Matrix
- 关于异常
- Android Volley框架解析
- codevs 高精度减法 3115
- 获取一个apk文件的包名
- JavaScript链式调用计算器
- 通道
- 27个iOS开源库,让你的开发坐上火箭吧
- Codeforces 672C Recycling Bottles【极限思维+贪心枚举】
- HDU 2034 人见人爱A-B_0
- SQL Server 2014 查询大全
- 蓝桥杯练习-01字串
- 枚举+并查集(1598)
- 华为oj----iNOC产品部-杨辉三角的变形 .
- 1004. 成绩排名 (20)
- 设计模式——原型模式
- 【centos】LNMP集成环境 的 安装 与 配置
- scp: command not found如何解决