Jef*_*nes 5 android android-layout android-fragments
我的一个片段上有一个按钮,位于相对布局内。这是一个相当大的按钮,当我粗手指它时,我得到一个 ACTION_CANCEL 动作事件而不是 ACTION_DOWN (它在指尖上工作得很好)。这可以防止它注册后续的 ACTION_UP (我假设视图的父级正在接管)。我尝试在父级上使用 requestDisallowInterceptTouchEvent() 方法,但无济于事。
这是我的 onTouch 实现:
@Override
public boolean onTouch(View view, MotionEvent event) {
//debugging
Log.v("TOUCH EVENT", event.toString());
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
mButton.getParent().requestDisallowInterceptTouchEvent(true);
//Do stuff...
return true;
} else if (action == MotionEvent.ACTION_UP) {
//Do other stuff...
return true;
} else if (action == MotionEvent.ACTION_CANCEL){
return false;
//Toast.makeText(context, "Your thumb is too fat.", Toast.LENGTH_SHORT).show();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
请注意,该按钮还使用自定义背景资源。当按下按钮时,我启动一个 AsyncTask,并且背景根据该任务的进度而变化。我不确定这是否与问题有关。
编辑:我沿着视图层次结构一直走到 ViewRootImpl,但在调用 requestDisallowInterceptTouchEvent() 时仍然没有运气。奇怪的是,当我的按钮粘住时,日志中会显示以下内容:
08-26 11:06:15.287:D / ViewRootImpl(5428):[ViewRootImpl]操作取消 - 1,s:31 s(atmel):-1.0 eccen:1.3333334
显然,该操作要么在进入 ViewRootImpl 之前被取消,要么在进入 ViewRootImpl 后立即被取消。这怎么可能?
更新:这方面仍然没有进展......有人吗?
更新 2:我认为这可能是一个设备相关问题。我使用的是 Galaxy S4
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |