【发布时间】:2013-05-13 14:43:11
【问题描述】:
我的onTouchEvent 遇到了一个奇怪的小问题。当您触摸屏幕边缘时,它应该显示操作栏(使用ActionbarSherlock,而不是android操作栏),然后向下移动按钮"buttonClick"以适应操作栏的高度。
这有效,但前提是您触摸两次。第一次触摸时,操作栏显示,第二次触摸时,按钮向下移动。我不知道为什么它在第一次触摸时两者都没有,而且我在这里的搜索只发现有人遇到它根本没有触发的问题,或者有几个人遇到了只有 onTouch 的问题 em> 发射两次,而不仅仅是一次。
我的onTouchEvent() 代码如下,如果有人能帮助我理解为什么会这样,我将不胜感激。
public boolean onTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.v(TAG, "New Touch");
Log.v(TAG, "Screen Width: "+ screen_width);
if (x >= (screen_width - 95)){
int actionHeight = getSupportActionBar().getHeight();
Log.v(TAG, ""+actionHeight);
thumbParams.setMargins(0,actionHeight,0,0);
thumbClick.setLayoutParams(thumbParams);
params.setMargins(0,actionHeight,0,0);
buttonClick.setLayoutParams(params);
getSupportActionBar().show();
}
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
}
return false;
}
【问题讨论】:
-
我认为这不是触摸事件处理程序的问题。由于您第一次看到显示栏而不是按钮,请检查您如何移动按钮。很明显,自从操作栏出现以来,您的代码正在执行。
-
您好新,感谢您的评论!我通过在我粘贴的代码中调整它的边距来移动按钮。我将垂直边距设置为actionBar的高度,然后将按钮的参数设置为更新后的参数。我很困惑,因为它确实运行,它只需要在它运行之前被击中第二次。我尝试将它放在显示操作栏的代码之后,以防它在隐藏时做一些奇怪的事情,高度为 0。它的运行方式没有任何区别。
-
在你触摸之前你的按钮是可见的吗?
-
是的。该按钮开始显示在应用程序的右上角。当触发 onTouch() 事件时,会显示 actionbar(在覆盖模式下,这就是为什么我需要手动调整按钮的位置)并且按钮应该向下移动操作栏的高度。
标签: android user-interface actionbarsherlock imagebutton touch-event