您现在的位置: 爱51代码网 >> 范文 >> 文章正文
viewpage在listview中第一行,导致viewpage不能左右滑动

viewpage在listview中第一行,导致viewpage不能左右滑动

我把viewpage放在listview中第一行,然后viewpage就不能左右滑动了

不知道要如何做才能让viewpage在listview中可以正常左右滑动呢?

重写ListView的触摸时间   估计ListView处理完自己的滑动时间 就不往下发了   因为它是View 不是ViewGroup   消费了触摸时间不需要继续下发  所以你的viewpage是接收不到触摸事件的(没有实际的分析,可能会有出入或者错误  仅供参考)

public class ViewPagerInListView extends ViewPager {                       public ViewPagerInListView(Context context) {               super(context);           }                       public ViewPagerInListView(Context context, AttributeSet attrs) {               super(context, attrs);           }                   public boolean onInterceptTouchEvent(MotionEvent arg0)          {             //当拦截触摸事件到达此位置的时候,返回true,             //说明将onTouch拦截在此控件,进而执行此控件的onTouchEvent             return true;         }                   /** 触摸时按下的点 **/        PointF downP = new PointF();         /** 触摸时当前的点 **/        PointF curP = new PointF();                   public boolean onTouchEvent(MotionEvent arg0) {             //每次进行onTouch事件都记录当前的按下的坐标             curP.x = arg0.getX();             curP.y = arg0.getY();               if(arg0.getAction() == MotionEvent.ACTION_DOWN){                 downP.x = arg0.getX();                 downP.y = arg0.getY();                 getParent().requestDisallowInterceptTouchEvent(true);             }               if(arg0.getAction() == MotionEvent.ACTION_MOVE){                 float dx = Math.abs(arg0.getX()-downP.x);                 float dy = Math.abs(arg0.getY()-downP.y);                                   if (dy<dx)                 {                     //此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰                     getParent().requestDisallowInterceptTouchEvent(true);                 }                 else                {                     getParent().requestDisallowInterceptTouchEvent(false);                 }             }               if(arg0.getAction() == MotionEvent.ACTION_UP){                 getParent().requestDisallowInterceptTouchEvent(false);                                   float dx = Math.abs(arg0.getX()-downP.x);                 float dy = Math.abs(arg0.getY()-downP.y);                                   if (dy<dx)                 {                     // 向右                     if (arg0.getX()-downP.x>0)                     {                         what.getAndAdd(-1);                         if (what.get() < 0) {                             what.getAndAdd(imageViews.size());                         }                         viewHandler.sendEmptyMessage(what.get());                     }                     else                    {                         what.incrementAndGet();                         if (what.get() > imageViews.size() - 1) {                             what.getAndAdd(-imageViews.size());                         }                         viewHandler.sendEmptyMessage(what.get());                                             }                 }                                   if (dx==0&&dy==0)                 {                     Intent intent = new Intent();                     intent.putExtra("id",""+curTitleShowId);                         intent.putExtra("title",""+curTitle);                      intent.putExtra("typeTilte",""+title);                      intent.setClass(act, NewsInfoActivity.class);                     act.startActivity(intent);                     act.overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out);                 }             }             return super.onTouchEvent(arg0);         }     }

拦截响应onTouchEvent处理横向滑动事件就行啦

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    undefined reference timer_crea
    java如何判断一个字符串里的数字
    undefined reference timer_crea
    Failed to open eth0
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    X Error: BadWindow (invali
    创建Android Test Project报
    android移动无线网络长连接代
    phonegap push-消息推送代码
    android采用Ksoap2访问webse
    android 4.0怎样实现开机自启
    android中不同的listview可以
    如何用adb获得手机里面某个a
    okButton'was not decla
    emulator-5554 disconnected
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |