2012-10-30 81 views
0

我在设计Android的UI,其中HorizontalScrollView在另一个HorizontalScrollView内。但是,孩子HorizontalScrollView不起作用。在另一个horizo​​ntalscroll视图中的水平滚动视图

是否有可能禁用父HorizontalScrollView每当手势在子HorizontalScrollView。我知道这听起来很棘手,但我需要在我的UI中实现这一点。

+0

我认为这是不可能的。我希望你会找到新的解决方案... –

+0

检查此解决方案:http://stackoverflow.com/a/7174396/779408它是垂直。但我认为你可以自定义它。 – breceivemail

回答

0

如何重写onInterceptTouchEvent这样的:

public class EmbeddedHorizontalScrollView extends HorizontalScrollView { 

    public EmbeddedHorizontalScrollView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 

     switch (ev.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       // tell parent and it's ancestors to skip touch events 
       this.getParent().requestDisallowInterceptTouchEvent(true); 
       break; 
      case MotionEvent.ACTION_UP: 
       this.getParent().requestDisallowInterceptTouchEvent(false); 
       break; 
     } 
     return super.onInterceptTouchEvent(ev); 
    } 
} 
1

有一个东西,里面还有一件事在一般一个坏主意是滚动卷轴。谷歌不推荐它。

这是因为android处理滚动事件的方式。有一种方法称为dispatchTouchEvent()onInterceptTouchEvent(),它决定是否拦截触摸事件或将它传递给它的孩子。对于可滚动的视图,它们将始终拦截“滑动”动作。所以它永远不会去你的孩子。

有这方面的解决方法,但他们很混乱,并不会工作大部分时间。你最好调整你的用户界面,以避免这种情况。

以下是这些线程讨论了一些可能的解决办法,如果你坚持尝试:

ListView in ScrollView potential workaround

ListView inside ScrollView is not scrolling on Android

Android: Scrollable preferences window with custom list view

0

所以我用滚动型里面的LinearLayout内horisontalScrollView。 主要问题是在Horizo​​ntalScrollView 中实现OnInterceptTouchEvent,以在检测到Y swype时在儿童ScrollView中传递TouchEvent。这是行之有效的,看起来很有趣。是的,你不应该直接在另一个Scrollview中放置Scrollview或listView,但是你可以在ScrollView中放入Linearlayout,而不是放在其他Scrollable对象上。