我在我的应用程序中使用了画廊。
因为我在每个画廊项目中有两个图像,就像这样
每个兔子和鼠标图像组合为一个画廊项目。
因此,我为这两个图像都提供了 onclickListener,但是如果我这样提供,我将无法通过触摸这些图像来滚动...如果我删除了单个图像的 onClickListener,我就可以滚动。
如何为每个图像归档滚动和 onClick。
我在我的应用程序中使用了画廊。
因为我在每个画廊项目中有两个图像,就像这样
每个兔子和鼠标图像组合为一个画廊项目。
因此,我为这两个图像都提供了 onclickListener,但是如果我这样提供,我将无法通过触摸这些图像来滚动...如果我删除了单个图像的 onClickListener,我就可以滚动。
如何为每个图像归档滚动和 onClick。
这回答了你的问题。您必须让您的活动同时处理 onClick 和手势。
我也遇到过这个问题。经过2天的工作,我找到了一个完美的解决方案:
onItemClickListener
为画廊。在活动上,听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);
}
onItemClick
对于画廊,您可以在其中获取每个视图并检查单击坐标。
Rect frame = new Rect();
image[i].getGlobalVisibleRect(frame);
if (frame.contains(x, y)) {//do whatever you want}
在我的例子中,我只是使用了 Gallery.setOnItemClickListener 和 Listener 来处理对父 Activity 的回调。
当我在上面的解决方案中听活动时,点击并没有为我注册。
我有同样的问题,但很容易解决。我所做的是将 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);
}
}
});
在您的情况下,您可以首先检查显示了哪些图像,然后根据该信息您可以操纵视图。希望这可以帮助
我的活动中有多个画廊,我就是这样做的:
实施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...
}
我的解决方案:
不要这样做!
:=)) (花了超过 6 个小时试图解决这个问题.. 对我没用......)使用了另一种方法(不同的布局)