只做过两个layout之间的左右滑动,切换图片,可以把listview放在相对应的两个layout里,然后切换~~

解决方案 »

  1.   

    就是把listview放到2个layout中啊,但是当onTouchEvent事件发生时,焦点被listview获取了,而listview只能上下滑动,不能左右滑动。若是考虑重写listview控件,给它加上处理左右滑动的方法,这个方法事件该如何写?
      

  2.   

    你想把listview的左右滑动和上下滑动分开来处理,窃以为不妥;因为你不能保证用户的手只做水平或垂直滑动。
    把listview放到viewflipper里,又想通过左右滑动实现切换,确实有点尴尬。
    你可以在每个layout添加Button,通过Button来控制切换;想到好的办法再告诉你
      

  3.   

    用ViewFlipper搞起来很恼火的。有一个google提供的android的扩展jar包,名字叫android-support-v4.jar(这个不一定是最新版本)。里面提供了一个控件叫ViewPager,用来做楼主那个功能很容易。http://www.cnblogs.com/dwinter/archive/2012/02/27/2369590.html上面这篇帖子讲了怎么用ViewPager的例子,还提供了源码。。希望有用!
      

  4.   

      谢谢你提供的信息,刚刚看了哈,这个应该还是无法解决我的问题(虽然没有试过,但是感觉应该不行),使用ViewPlipper不难实现多个layout之间的左右滑动。问题出现在我给这些layout加上ListView后,当手指触摸到ListView中的Item中时,activity无法获取到焦点事件,手指在ListView间的左右滑动事件被ListView或者ListView的Item消化掉了,layout间左右滑动功能失效了
      

  5.   

    你没有把事件传递给Flipper所以左右滑动无法响应。你应该在ListView中让ViewFlipper也响应onTouch事件。
      

  6.   

     我也关注这个
    类似的问题还有 scrollView+viewFlipper
    其实viewFlipper还算简单,那种跟着手指移动的切屏才难弄。
      

  7.   

    问题我解决了一半吧,下面贴出我的解决方法和问题,希望有解决该问题的大牛能顺利解决。方法:帖子:http://topic.csdn.net/u/20110316/16/a26f9883-12ea-472c-92f6-e64949381a3b.htmllistview.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    MyActivity.this.detector.onTouchEvent(event);
    return true;
    }
    }); 帖子:http://topic.csdn.net/u/20101229/10/9bd48452-08a4-4e82-b92c-2c6fd7c95756.htmlpublic boolean dispatchTouchEvent(MotionEvent ev) {
    MyActivity.this.detector.onTouchEvent(ev);
    return super.dispatchTouchEvent(ev);
    } 问题来了,左右滑动是实现了,但是Activity和Item同时获取到了事件,都做处理了,也就说页面拖动到下一个layout后,Item点击时间跟着启动了。我偷懒,选择了一个迂回一点的方法处理,对Item进行长按监听了ListView中的Item点击事件在Activity中使用 “长按” 事件处理。listview.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
    int position, long id) {
    Toast.makeText(KJ133MActivity.this, "长按中===>" + position , 1).show();
    Intent i = new Intent(MyActivity.this, OtherActivity.class);
    startActivity(i);
    return true;
    }
    }); 
      

  8.   

    ViewPager是可以实现你想要的功能的,真希望你试一下。
    网上关于Viewpager的例子很少而且很浅,其实VIewPager是一个很不错的控件
      

  9.   

    我也要找个东西,发一份给我吧,[email protected]
      

  10.   

    还有我  [email protected]
      

  11.   

    当ViewFlipper 与 touch 事件冲突时,ViewFlipper的滑屏事件会被 touch 事件拦截,解决方法如下:    public boolean onTouchEvent(MotionEvent event) {
            // 执行touch 事件
    super.onTouchEvent(event);
    return this.detector.onTouchEvent(event);
        }

        /**
          * 这个方法会先执行,当返回为true时,才执行 onTouchEvent 方法
          */
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev){
    //先执行滑屏事件
    detector.onTouchEvent(ev);
            super.dispatchTouchEvent(ev);
            return true;
        } 
      

  12.   

    楼上方法试过了,确实有效·~~~ 谢谢    huweilong1030  的分享   
      

  13.   

    楼主的问题我已经解决了, 就是用ViewPager 实现的不知道你自己试过没有,没试过怎么就说不行呢 ,,,是不
      

  14.   

    ViewPager肯定行,我在项目中用过,在5个layout之间切换,而且每个layout都有listview
      

  15.   

    上述给位朋友都建议用viewpager和viewflipper,用这两个都可以实现多个界面之间的切换,但是每个界面都只能是listview,如果在一个界面中有个布局再有个listview,而且使得这个布局与listview一起滑动焦点就取不到了,就会出现和楼主一样的问题,如果在这个界面中使用scrollview来保证这个布局和listview的滑动的话,理论上是可以的,但是我使用时还是焦点取不到,更改属性也不行。看来只能代码块中修改了,正在修改中。。
      

  16.   

    恩恩,dispatchTouchEvent方法可以解决的,我们当初也遇到过这种问题!