2012-01-18 90 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