安卓图库没有滚动点击

时间:2011-09-23 20:17:46

标签: android

默认情况下,当单击图库项目时,图库会自动滚动以使所单击的项目居中。我该如何覆盖此行为?我不希望画廊在点击时滚动到中心,我希望它保持原样。

6 个答案:

答案 0 :(得分:8)

我认为这是一个正确的解决方案:

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

    return handled;
}

答案 1 :(得分:2)

我认为这就是你要找的东西。

首先创建一个从Gallery扩展的类,然后覆盖 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;
}

答案 2 :(得分:1)

我之前从未使用过画廊(实际上我必须先观看YouTube视图才能看到它的视觉效果; - )

所以我深入了解了画廊的源代码,在我看来,他们已经将选择权与定位相结合,所以你必须覆盖这个类并做一些沉重的代码破解,甚至是反射,才能达到你的目标。我甚至不知道你是否会成功。

这不是一个解决方案,但如果你想要意识到这一点,你应该期待什么; - )

答案 3 :(得分: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();
    }
});

}

答案 4 :(得分:0)

我没有尝试过这个......但你可以尝试以下方法:

onItemClickListener.onItemClick()中,使用Gallery.getSelectedItemPosition()确定当前选定的排名,然后使用Gallery.setSelection(int position)设置排名。我不知道这是否有效,但你可以试一试。

您还可以尝试利用OnItemSelectedListener

答案 5 :(得分:0)

很遗憾,我似乎无法对其他人的帖子发表评论,但对于发现此问题但遇到问题的人,请注意,如果您要创建一个覆盖onSingleTap的自定义图库方法(由Ohgema建议),您需要覆盖constructor that takes a Context and an AttributeSet