避免触摸和单击Android在OnTouch(),IOnTouchListener中的重叠?

时间:2015-10-11 17:38:36

标签: java c# android xamarin

Image of my App

我正在创建这个应用程序。

  

我的onsingletapup.cs文件的代码

PinnedHeaderAdapter
  

这是我的mainactivity.cs

public int getCurrentSectionPosition(int position) {
    //String listChar = mListItems.get(position).getBeerName().substring(0, 1).toUpperCase(Locale.getDefault());
    PiwoSubclass ps = mListItems.get(position); // TODO errorrrrrrrrr
    return mListItems.indexOf(ps);

}

现在我的问题是在某些设备上我的当前代码给出了一些异常行为。就像我执行 OnSingleTapUp()一样,它应该执行点击操作,但它正在执行移动操作。我的问题是我的代码出了什么问题,以致它无法正常工作。任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

onTouch和onClick无法一起使用。在所有情况下,onTouch将获得优先级,实际上onClick in也是一种很好的onTouch实现。如果你想拥有onClick排序功能,请放开原始onClick并尝试在onTouch中处理它。您可以在Xamarin中获取GestureDetector.SimpleOnGestureListener的帮助。有关覆盖双击的示例,您可以像这样执行此操作

class MyDoubleTapListener : GestureDetector.SimpleOnGestureListener
    {           

        public override bool OnDoubleTap(MotionEvent e)
        {
            //Your code here

            return false;
        }
    }

然后在您的活动中

public class Test : Activity, View.IOnTouchListener
{
        private GestureDetector _gestureDetector = null;


        protected override void OnCreate (Bundle bundle)
        {

            _gestureDetector = new GestureDetector(new MyDoubleTapListener (this));


        _editText.SetOnTouchListener(this);
        }


        public bool OnTouch(View v, MotionEvent e)
        {    
            return _gestureDetector.OnTouchEvent(e);
        }


}

GestureDetector还为您提供其他方法,以满足您的需求。请遵循此https://developer.xamarin.com/api/type/Android.Views.GestureDetector/

答案 1 :(得分:0)

我无法确切地了解你在onTouch界面中想要做什么。无论如何,你必须知道一些要点:

1)处理触摸事件时,onTouch方法返回一个布尔值,指示事件是否被消耗(true)与否(false)。如果您使用与click相关的触摸事件,则不会触发单击侦听器。所以,确保你只是在消费所需的东西。

2)当您将侦听器设置为onClick或onTouch到某个视图时,如果不是,它将分别变为可点击和可触摸。如果您在代码的某些部分将此属性设置为false,请确保在您要处理此类事件时再次启用它。