我在我的应用中使用过画廊。
因为我在每个画廊项目中都有两个图像,如下所示
每个兔子和鼠标图像组合为一个图库项目。
所以我给两个图像都给了onclickListener,但是如果我这样给出我无法通过触摸那些图像滚动...如果我删除onClickListener的单个图像,我就可以滚动。
如何为每张图片存档滚动和onClick。
答案 0 :(得分:4)
这answers your question。你必须让你的活动同时处理onClick和Gestures。
答案 1 :(得分:3)
在我的情况下,我只使用了Gallery.setOnItemClickListener,并且Listener处理了对父Activity的回调。
当我在上面的解决方案中进行了Activity监听时,点击没有为我注册。
答案 2 :(得分:3)
我也遇到了这个问题。经过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}
答案 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个多小时试图解决这个问题..对我来说没什么用......) 使用了另一种方法(不同的布局)