我在设计Android的UI,其中HorizontalScrollView
在另一个HorizontalScrollView
内。但是,孩子HorizontalScrollView
不起作用。在另一个horizontalscroll视图中的水平滚动视图
是否有可能禁用父HorizontalScrollView
每当手势在子HorizontalScrollView
。我知道这听起来很棘手,但我需要在我的UI中实现这一点。
我在设计Android的UI,其中HorizontalScrollView
在另一个HorizontalScrollView
内。但是,孩子HorizontalScrollView
不起作用。在另一个horizontalscroll视图中的水平滚动视图
是否有可能禁用父HorizontalScrollView
每当手势在子HorizontalScrollView
。我知道这听起来很棘手,但我需要在我的UI中实现这一点。
如何重写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);
}
}
有一个东西,里面还有一件事在一般一个坏主意是滚动卷轴。谷歌不推荐它。
这是因为android处理滚动事件的方式。有一种方法称为dispatchTouchEvent()
和onInterceptTouchEvent()
,它决定是否拦截触摸事件或将它传递给它的孩子。对于可滚动的视图,它们将始终拦截“滑动”动作。所以它永远不会去你的孩子。
有这方面的解决方法,但他们很混乱,并不会工作大部分时间。你最好调整你的用户界面,以避免这种情况。
以下是这些线程讨论了一些可能的解决办法,如果你坚持尝试:
ListView in ScrollView potential workaround
ListView inside ScrollView is not scrolling on Android
Android: Scrollable preferences window with custom list view
所以我用滚动型里面的LinearLayout内horisontalScrollView。 主要问题是在HorizontalScrollView 中实现OnInterceptTouchEvent,以在检测到Y swype时在儿童ScrollView中传递TouchEvent。这是行之有效的,看起来很有趣。是的,你不应该直接在另一个Scrollview中放置Scrollview或listView,但是你可以在ScrollView中放入Linearlayout,而不是放在其他Scrollable对象上。
我认为这是不可能的。我希望你会找到新的解决方案... –
检查此解决方案:http://stackoverflow.com/a/7174396/779408它是垂直。但我认为你可以自定义它。 – breceivemail