ScrollView嵌套RecyclerView出现的滑动以及显示异常的处理
2017-04-12 14:58
429 查看
解决问题:1.滑动冲突 2.显示不完整
1.滑动冲突:
1.1.重写ScrollView
package com.cexi.yunzehui.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ScrollView; /** * Created by Hsh on 2017/4/6. * 解决内嵌 * * 横向滑动或者竖向的view 滑动不灵敏的问题 * 外层拦截法 *核心:不拦截横向滑动,拦截竖向 */ public class NestedScrollView extends ScrollView { private float mDownPosY; private float mDownPosX; public NestedScrollView(Context context) { super(context); } public NestedScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public NestedScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final float x = ev.getX(); final float y = ev.getY(); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mDownPosX = x; mDownPosY = y; break; case MotionEvent.ACTION_MOVE: final float deltaX = Math.abs(x - mDownPosX); final float deltaY = Math.abs(y - mDownPosY); if (deltaX > deltaY) { return false; } } return super.onInterceptTouchEvent(ev); } }
1.2.滑动惯性丧失
rvVertical.setNestedScrollingEnabled(false);
2.条目缺失问题
当第一个window不出现RecyclerView时,我们的显示是没问题的,反之,只能显示一条,或两条这个问题是同事发现的,我们当时都觉得很诡异另外,这是一个深坑,可能这个手机显示没问题,你换个高一点的手机,RecyclerView正好在第一个window露了头,恩恩,结果就是,就剩那么一两条数据了这时,我们怎么处理呢?有两种方案
2.1写死条目高度,
网络请求获得条目数量,根据条目数量,动态设置RecyclerView高度缺点:这时RecyclerView的高度是固定的,RecyclerView需要一次就把所有条目加载完,会造成recyclerview无法复 用,此时的recyclerview基本上就与LinearLayout无异,当条目数量很少时你可以这样做,当条目数量很多时,无疑对性能是很大的伤害。2.2推荐方法
在外层嵌套一个相对布局即可<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants"> <android.support.v7.widget.RecyclerView android:id="@+id/rv_vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </RelativeLayout>
是不是解决了,这个其实是google的一个小坑
第一篇博客,还希望大家少黑,给点鼓励,分享是前进的动力,大家加油
qq:765472289 希望和大家一起探讨
相关文章推荐
- 在ListView嵌套GridView中出现的点击事件冲突的处理以及gridview显示不全的问题
- 当权限正常以及连接正常时,WMI出现莫名COM异常的处理
- listview嵌套listview视图显示不全以及子listview不能滑动的处理
- C#winform省市县联动,以及有的县是空值时显示异常的处理
- python学习:异常处理、with用法以及utf8中文显示
- springMVC高级部分(数据校验,数据错误回显(自定义格式错误显示),拦截器,异常处理,文件上传,文件下载,springmvc运行流程以及springmvc和struts2对比)
- [Android]在ListView嵌套GridView中出现的点击事件处理以及gridview显示不全的有关问题
- 加载大图片时,出现的OOM异常,以及处理OOM异常的方法
- Android 在ListView嵌套GridView中出现的点击事件冲突的处理以及gridview显示不全的问题
- [Android]在ListView嵌套GridView中出现的点击事件处理以及gridview显示不全的问题
- 生成器+列表生成式,生成器可以节省内存,随时调取函数运行,以及实现多线程运行函数,__next__()和.send(参数)的区别,a,b=b,a+b其实是元祖的用法,出现异常状态用try...except StopIteration来处理
- 点击按钮出现请稍候……处理完毕显示相关内容
- PPC中窗体内容以及随着输入法面板的显示状态的滚动处理
- 在java中CreateProcess出现的异常的处理(备忘)
- dataType参数不能为空,未处理的“System.ArgumentNullException”类型的异常出现在 mscorlib.dll 中
- 未处理的“System.Net.WebException”类型的异常出现
- 未处理的“System.FormatException”类型的异常出现在 mscorlib.dll 中。
- .net中常出现的错误异常的处理
- Struts 1 学习笔记-5-3(Struts的自动处理异常以及模式套用)
- 关于Response.redirect和Response.End出现线程中止异常的处理