2012-01-18 92 views
1

我的应用程序有一个GridView。它已经有一个onItemClickListener和onItemLongClickListener。我想现在禁用GridView中的滚动功能。随着https://stackoverflow.com/a/6496632/985025帮助我增加了一个onTouchListener如下图所示:如何禁用GridView中的滚动?

 mGridView.setOnItemClickListener(this); 
     mGridView.setOnItemLongClickListener(this); 
     mGridView.setOnTouchListener(new OnTouchListener(){ 
      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       if(arg1.getAction() == MotionEvent.ACTION_MOVE) 
        return true; 
       else 
        return false; 
      } 
     }); 

我预期的行为是当过我尝试在GridView中滚动,该事件应该被忽略。但是,即使在onTouch中返回true,我也会在onItemClick中获得一个事件。 有没有办法避免onItemClick在GridView上滚动的情况?

+0

可能重复的[如何禁用GridView滚动在Android?](http://stackoverflow.com/questions/4852867/how-to-disable-gridview-scrolling-in-android) – lxknvlk 2016-10-23 12:23:18

回答

0

通过使用下面的语句 我们可以控制滚动在GridView控件

mGridView..setVerticalScrollBarEnabled(false); 
+1

似乎不工作:( – 2012-01-18 10:18:29

+15

这会删除滚动条,但不会禁用它 – 2012-01-18 10:38:21

0

使用TableLayout。达到你想要的。一个GridView对于你的用例来说是一个超级杀伤力,所有的回收都是如此。

+0

将GridView改为TableLayout现在是一种矫枉过正的行为:D其他任何线索? – 2012-01-18 11:54:14

0

这里的人们用ScrollView吞噬了GridView,并且做了这个伎俩,我希望它能帮助任何坚持这个问题的人。

+0

哦,请不要这么做!这对性能不利(GridView '猜测它的大小?所以它会根据需要创建更多的控件),并且如果网格视图不消耗'ScrollView'这两个视图中哪一个应该滚动的孔空间?'GridView'或者'ScrollView'或者都? – rekire 2013-04-25 07:12:08