Android图库查看在给定项目的onClickListener时滚动问题

时间:2011-03-03 08:32:51

标签: android scroll onclick gallery android-gallery

我在我的应用中使用过画廊。

因为我在每个画廊项目中都有两个图像,如下所示

enter image description here

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

所以我给两个图像都给了onclickListener,但是如果我这样给出我无法通过触摸那些图像滚动...如果我删除onClickListener的单个图像,我就可以滚动。

如何为每张图片存档滚动和onClick。

6 个答案:

答案 0 :(得分:4)

answers your question。你必须让你的活动同时处理onClick和Gestures。

答案 1 :(得分:3)

在我的情况下,我只使用了Gallery.setOnItemClickListener,并且Listener处理了对父Activity的回调。

当我在上面的解决方案中进行了Activity监听时,点击没有为我注册。

答案 2 :(得分: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. 对于图库,
  4. onItemClick,您可以获得其中的每个视图并检查点击坐标。

    Rect frame = new Rect();
    image[i].getGlobalVisibleRect(frame);
    if (frame.contains(x, y)) {//do whatever you want}
    

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

                }
            });

在您的情况下,您可以先检查显示哪些图像,并根据该信息设置视图。希望这有帮助

答案 4 :(得分: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...
}

答案 5 :(得分:0)

我的解决方案:

不要这样做!

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