android 点击事件覆盖,Android:View.setClickable消耗点击事件

我有一个用于水平滚动的自定义图库视图和几个所有应该可点击的子视图.

设置childview.setOnClickListener()不起作用,因为它总是使用触摸事件.

因此,我使用了childview.setOnTouchListener()并让它的onTouch方法返回false,以便Gallery可以滚动.

这一切都很好.

现在的问题是,childView的onTouch方法只会触发ACTION_DOWN事件.

除非我通过设置childview.setClickable()使View可单击,否则它不会传递MotionEvent ACTION_UP.

但是,设置View clickable本身似乎会消耗onTouch事件,以便库视图变为不可滚动.

好像我在这里走了一圈.我会感激任何帮助.

这是我的代码

图库视图:

public class myGallery extends Gallery {

public myGallery(Context ctx, AttributeSet attrSet) {

super(ctx, attrSet);

// TODO Auto-generated constructor stub

}

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){

return e2.getX() > e1.getX();

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){

int kEvent;

if(isScrollingLeft(e1, e2)){ //Check if scrolling left

kEvent = KeyEvent.KEYCODE_DPAD_LEFT;

}else{ //Otherwise scrolling right

kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;

}

onKeyDown(kEvent, null);

return true;

}

}

在我的活动中:

gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

public void onItemSelected(AdapterView> parent, View view,

int position, long id) {

// childView.setClickable(true); // can't use this

// click event would get consumed

// and gallery would not scroll

// therefore, I can only use the ACTION_DOWN event below:

childView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

//doStuff();

}

return false;

}

});

}

public void onNothingSelected(AdapterView> arg0) {}

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值