2011-09-23 92 views
4

默认情况下,当点击一个图库项目时,图库会自动滚动以居中点击的项目。我如何覆盖这种行为?我不希望画廊在点击时滚动到中心位置,我希望它保持在原来的位置。android图库没有滚动点击

回答

8

我认为这是一个正确的解决办法:

@Override 
public boolean onSingleTapUp(final MotionEvent e) {  
    boolean handled = super.onSingleTapUp(e); 
    onDown(e); 

    return handled; 
} 
+0

我终于重新测试了这一点。这很好,谢谢你,我已经放弃了这个高兴,我检查了。 – drod

+0

它确实有效! – androidGuy

0

图库有一个方法来覆盖这个。

gallery.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position, long id) { 
     Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show(); 
    } 
}); 

}

+0

这是如何回答这个问题的? – Noel

+0

那么我需要在onItemClick中做些什么来保持默认的滚动中心?谢谢 – drod

0

我没有尝试这样做...但你可以尝试以下方法:

onItemClickListener.onItemClick(),使用Gallery.getSelectedItemPosition()确定当前选择的位置,然后设置使用Gallery.setSelection(int position)位置。我不知道这是否会奏效,但你可以试试看。

还有你可以尝试利用的OnItemSelectedListener

1

我从未使用过画廊前(其实我只好眼睁睁地看着YouTube观看,它首先是视觉效果;-)

所以我在画廊的源代码,并挖在我看来,他们已经追平这个选择对于定位来说相当重要,所以你必须重写这个类,并且进行一些沉重的代码黑客攻击,甚至反射,才能达到你的目标。我甚至不知道你是否会成功。

这不是一个解决方案,但一个提示,如果你想知道,;-)

+0

只是回到这个。从我所能找到的内容来看,你所说的是正确的。我将不得不尝试复制图库源代码并实现为我自己的图库类。如果任何人有任何关于这个话题的推荐阅读,那将是很棒的。谢谢。 – drod

2

我认为这是你在找什么,你应该期待什么。

首先创建一个从库扩展一个类,然后重写onSingleTapUp方法:

@Override 
public boolean onSingleTapUp(final MotionEvent e) { 
    final OnItemClickListener listener = getOnItemClickListener(); 
    final View selectedView = getSelectedView(); 

    final float tapX = e.getRawX(); 
    final float tapY = e.getRawY(); 

    if ((selectedView != null) && (listener != null) 
      && (tapX >= selectedView.getLeft()) && (tapX <= selectedView.getRight()) 
      && (tapY >= selectedView.getTop()) && (tapY <= selectedView.getBottom())) { 

     final int selectedPosition = getSelectedItemPosition(); 

     listener.onItemClick(this, selectedView, selectedPosition, selectedPosition); 
    } 

    return true; 
} 
+0

看起来像我是lookim – drod

+0

我会测试和更新。谢谢 – drod

0

不幸的是我好像不有能力评论其他人的帖子,但对于任何发现此问题但有问题的人,请注意,如果您正在创建自定义图库来覆盖onSingleTap方法(如Ohgema所建议的),那么您需要覆盖constructor that takes a Context and an AttributeSet