Android Scroll 中嵌套ListView



public class ExpListView extends ListView{


    public ExpTwoWayView(Context context) {
    super(context);
    }

    public ExpTwoWayView(Context context, AttributeSet attrs) {
    super(context, attrs);
    }


    在Scroll中嵌套ListView,一般会出现了、ListView的item只显示一个的情况,出现这种情况,如果想让ListView显示正常,一种方法是设置ListView

    的高度,比如300dp,另一种方法就是重写ListView的onMeasure方法,如下。但是重写该方法也有问题。就是写成这样,会将ListView的所有Item都显示出来,

   如果ListView 有10个Item,那就显示十行,如果有1000个item,那就显示1000行,整个界面完全变形了。同时重写了这个方法,ListView就不会有滚动效果了。每次

   滑动屏幕的时候,滚动的是外面的Scroll。如果想在滑动屏幕的时候,我滑动ListView,Scroll不滑动,那就要重写ListView  的onInterceptTouchEvent和onTouchEvent方法。

   如下所示,同时把onMeasure方法注释掉。

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
    super.onMeasure(expandSpec, heightMeasureSpec);
    }




   写成这样的话,在滑动ListView的时候,外面的Scroll就不会滑动了。但是也有一个问题,就是当ListView滑动到开始或者末尾的时候,在滑动ListView, Scroll

   仍然接受不到滑动事件。只有滑动Scroll的时候,Scroll才会有相应。呵呵,非常高深的一个问题。。。。。。

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
    boolean ret = super.onInterceptTouchEvent(ev);

    Log.i("----->", " onInterceptTouchEvent ret = " + ret);
    if (ret) {
        getParent().requestDisallowInterceptTouchEvent(true);
    }
    return ret;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
    boolean ret = super.onTouchEvent(ev);

    Log.i("----->", " onTouchEvent ret = " + ret);
    if (ret) {
        getParent().requestDisallowInterceptTouchEvent(true);
    }
    return ret;
    }

}




更多相关文章

  1. 使用反射获取Android中隐藏的方法
  2. android 按钮效果的两种实现方法
  3. Android设置桌面背景图片的方法
  4. [置顶] 找到一个在Android上创建阻塞式模态对话框的方法
  5. Android来电拦截的实现方法
  6. Android Studio集成Library时报错,终极解决方法
  7. Android从服务器获取图片的实例方法
  8. android屏幕休眠和唤醒两种方法(newWakeLock)
  9. android添加图片到本地,无法即使刷新的解决方法

随机推荐

  1. php开发一个文件管理系统(附代码)
  2. 解决CentOS7中php-fpm进程数过多导致服务
  3. php中加密解密DES的正确使用姿势
  4. CentOS 下三种 PHP 拓展安装方法
  5. PHP编译参数configure配置详解
  6. PHP使用swoole实现多线程爬虫
  7. 怎么将网站的php版本信息隐藏起来
  8. php实现性能优化
  9. 关于php中变量的初始化以及赋值方式的介
  10. 通过header函数设置响应头解决php跨域问