一、关于NestedScrollView + RecyclerView页面载入时总是滑动到最底部
项目中遇到页面载入时总是滑动到最底部,原因是焦点在页面底部;
方法一:解决方法就是在根布局设置android:descendantFocusability="blocksDescendants" ;
android:descendantFocusability 有三种值:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

这种方法,会造成页面中Editext焦点被抢导致无法输入,需要用到第二种方法。
方法二:对于有Editext的页面需要在根布局使用 :
android:focusable="true"
android:focusableInTouchMode="true";

二、解决NestedScrollView嵌套RecycleView显示一行的bug
scrollview嵌套recyclerview不能完全显示的几种办法:
1.http://www.cnblogs.com/woaixingxing/p/6098726.html
2.http://www.jianshu.com/p/3815d36fd371?nomobile=yes
android:descendantFocusability="blocksDescendants"
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

三、解决ScrollView嵌套RecyclerView(横向)或ListView(横向)时,横向滑动不顺畅的问题。

/** * 解决ScrollView与RecyclerView横向滚动时的事件冲突 */public class ScrollRecyclerView extends RecyclerView {    public ScrollRecyclerView(Context context) {        super(context);    }    public ScrollRecyclerView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public ScrollRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    private float lastX, lastY;    @Override    public boolean onInterceptTouchEvent(MotionEvent e) {        boolean intercept = super.onInterceptTouchEvent(e);        switch (e.getAction()) {            case MotionEvent.ACTION_DOWN:                lastX = e.getX();                lastY = e.getY();                break;            case MotionEvent.ACTION_MOVE:                // 只要横向大于竖向,就拦截掉事件。                // 部分机型点击事件(slopx==slopy==0),会触发MOVE事件。                // 所以要加判断(slopX > 0 || sloy > 0)                float slopX = Math.abs(e.getX() - lastX);                float slopY = Math.abs(e.getY() - lastY);               //  Log.log("slopX=" + slopX + ", slopY="  + slopY);                if((slopX > 0 || sloy > 0) && slopX >= slopY){                    requestDisallowInterceptTouchEvent(true);                    intercept = true;                }                break;            case MotionEvent.ACTION_UP:                intercept = false;                break;        }       // Log.log("intercept"+e.getAction()+"=" + intercept);        return intercept;    }}

更多相关文章

  1. 五、Fresco——ScaleType focusCrop属性详解
  2. Android用户输入自动提示控件AutoCompleteTextView使用方法
  3. Android(java)学习笔记92:泛型高级之通配符
  4. android 5.0系统主题颜色相关
  5. Android(安卓)获取控件的高度或者宽度的方法
  6. Android(安卓)开源控件系列_2
  7. Android中自制通讯录中显示出数据库中的姓名和电话号码进行打电
  8. Android(安卓)UI
  9. android中gridview的居中问题

随机推荐

  1. WebRTC
  2. Android(安卓)获取View高度宽度
  3. widget入门
  4. Android(安卓)2.3的camera的虚拟对焦的去
  5. Android(安卓)studio怎样隐藏标题栏
  6. Android(安卓)轻松实现语音识别的完整代
  7. 【Android】配置文件属性说明
  8. 【Android基础】Android开发学习笔记
  9. Android中attr自定义标签详解
  10. ant编译android工程用批处理打包