我有一个ViewPager,它保存动态添加(从XML扩展)并由PagerAdapter控制的视图。添加的视图有一些简单的EditText和一个包含可触摸图表的SurfaceView。
为了在用户浏览视图时将焦点从EditText中删除,我遵循了这个建议,并在动态添加的视图布局中添加了以下内容:
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
这非常有效,但它带来了一个新问题。用户还需要能够触摸SurfaceView上的图表,但SurfaceView将每次触摸注册为2次触摸(如果我删除以上XML属性,它可以正常工作,但我有EditText焦点问题)。
我尝试了以上XML属性的不同变体(有些是true,有些是false),但没有产生所需的结果。我还尝试向EditTexts添加一个OnFocusChangeListener,这样,如果有焦点,上面的属性将为true,否则为false。
我已经做了一些搜索,但找不到我想要的东西——任何帮助都将不胜感激。
您正在使用onTouchEvent吗?如果是,则注册为:
ACTION_UP
ACTION_DOWN
ACTION_MOVE
and more
您可以判断发生了什么,并且只处理ACTION_UP事件,如下所示:
public boolean onTouchEvent(MotionEvent event)
{
int action = event.getAction();
//When the user lifts up...
if (action==MotionEvent.ACTION_UP)
{
//Do something here
}
}
这可能就是你选择两次触球的原因。