12

我在我的应用程序中使用了画廊。

因为我在每个画廊项目中有两个图像,就像这样

在此处输入图像描述

每个兔子和鼠标图像组合为一个画廊项目。

因此,我为这两个图像都提供了 onclickListener,但是如果我这样提供,我将无法通过触摸这些图像来滚动...如果我删除了单个图像的 onClickListener,我就可以滚动。

如何为每个图像归档滚动和 onClick。

4

6 回答 6

4

回答了你的问题。您必须让您的活动同时处理 onClick 和手势。

于 2011-03-03T08:49:38.803 回答
3

我也遇到过这个问题。经过2天的工作,我找到了一个完美的解决方案:

  1. 也设置onItemClickListener为画廊。
  2. 在活动上,听onTouchEvent画廊和活动,写下原始坐标

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        x = (int)event.getRawX();
        y = (int)event.getRawY();
        return false;
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        x = (int)event.getRawX();
        y = (int)event.getRawY();
        return super.onTouchEvent(event);
    }
    
  3. onItemClick对于画廊,您可以在其中获取每个视图并检查单击坐标。

    Rect frame = new Rect();
    image[i].getGlobalVisibleRect(frame);
    if (frame.contains(x, y)) {//do whatever you want}
    
于 2011-12-08T16:19:09.203 回答
3

在我的例子中,我只是使用了 Gallery.setOnItemClickListener 和 Listener 来处理对父 Activity 的回调。

当我在上面的解决方案中听活动时,点击并没有为我注册。

于 2011-05-19T11:44:31.183 回答
2

我有同样的问题,但很容易解决。我所做的是将 setOnItemClickListener 添加到 GalleryView,然后获取我想要的视图,在我的例子中是 TextView。

 private boolean isVisble = true;
 gallery_images.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
                    TextView image_text =  ((TextView)arg1.findViewById(R.id.image_text));
                    if(!isVisble){

                        isVisble = true;

                        image_text.setVisibility(TextView.VISIBLE);
                    }
                    else{
                        isVisble = false;
                        image_text.setVisibility(TextView.GONE);
                    }

                }
            });

在您的情况下,您可以首先检查显示了哪些图像,然后根据该信息您可以操纵视图。希望这可以帮助

于 2012-07-30T14:00:27.687 回答
0

我的活动中有多个画廊,我就是这样做的:

实施OnItemClickListener

public class ImageBoardActivity extends Activity implements OnItemClickListener {

覆盖onItemClick()方法

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
    // do what you want here...
}
于 2011-03-07T15:01:32.997 回答
0

我的解决方案:

不要这样做!

:=)) (花了超过 6 个小时试图解决这个问题.. 对我没用......)使用了另一种方法(不同的布局)

于 2012-03-25T01:41:19.617 回答