带有可触摸/可聚焦对象的Android ViewPager



我有一个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
    }
}

这可能就是你选择两次触球的原因。

最新更新