我对Android编程非常陌生,并试图通过嵌套视图了解触摸事件。首先,这里是我的应用程序的描述:使用多个视图/布局处理Android中的触摸事件
我有一个相对的布局,我已经通过GUI编辑器添加了。一切都是默认的。我还创建了一个名为ClipGrid的类,它扩展了ScrollView。嵌套在那里,我做了一个HorizontalScrollView。在里面,我做了一个TableLayout,它是行。这些行包含按钮。
最终结果是一个按钮的网格。它一次显示4x4,但可以滚动任一方向显示其他按钮。我从它的主要活动中调用它到这样的屏幕: ClipGrid clip_grid = new ClipGrid(this); setContentView(clip_grid);
我这样做只是为了测试目的,我想我将不得不稍后改变它,当我想添加其他视图到我的relativelayout。但我认为这可能会影响触摸事件。
最后,我想要检测网格何时移动,并在用户提起手指时将新近可见的4x4网格按钮捕捉到我的布局边缘。我只是不知道如何去实现这一点,任何帮助将不胜感激。谢谢。
感谢回答。所以说,我想我的表格布局来处理触摸事件。由于它嵌套在水平滚动视图和滚动视图中,是否从这些父视图返回false(并且表格布局为true),还是不实现该事件?作为一个方面说明,是否有更好的方法来实现我想要做的事情? – ultra 2012-08-13 13:44:40
如果视图不处理触摸事件,则不要实现它。他们默认返回false。从听起来像,你可能想看看'ViewPager'。除此之外,您可能需要检测ScrollView中的滑动事件。它给出并且知道它的孩子的维度。如果它控制了运动而不是孩子,它也会更好。通过'ScrollViews',你还可以使用'onInterceptTouchEvent()',它基本上从顶视图中窃取触摸事件来处理它,然后将事件给予子项。 – DeeV 2012-08-13 13:54:42
谢谢,这让我走向正确的方向,现在我有它的工作。事实证明,我必须从scrollview或其嵌套的水平滚动视图实现onTouchListener,否则它只会检测一个方向的滚动。同样,从这些返回true将实际上停止滚动表格布局。 – ultra 2012-08-13 23:29:01