【问题标题】:Android onTouch(View,MotionEvent) not called but onTouchEvent(MotionEvent event) is called?Android onTouch(View,MotionEvent) 未调用但 onTouchEvent(MotionEvent event) 被调用?
【发布时间】:2012-02-17 06:28:55
【问题描述】:

有谁知道为什么我的日志显示 onTouch(View, MotionEvent) 没有被调用。我可以看到 onTouchEvent(MotionEvent event) 正在被调用。两者都在实现 View.OnTouchEvent 的 Activity 中被覆盖。

【问题讨论】:

  • 为什么要在Activity中重写onTouch()和onTouchEvent()?它不应该在你的 Activity 中使用 setOnTouchListener() 吗?

标签: android


【解决方案1】:

onTouch()View被触摸时被调用,而onTouchEvent()Activity(屏幕)被触摸时被调用。

onTouch()的返回值为true时,触摸事件将由onTouch()承担,否则,该事件将传递给onTouchEvent()

希望对你有用。

【讨论】:

    【解决方案2】:

    AFAIK,活动没有定义onTouch(..),但它确实定义了onTouchEvent(..)。所以你要覆盖后者,而只是定义前者。

    另外,onTouchEvent(..) 是最后的触摸处理程序 - 只有当视图不处理它时才会调用它:

    onTouchEvent(MotionEvent event)
    Called when a touch screen event was not handled by any of the views under it.
    

    【讨论】:

    • 好的。我正在尝试滑动以更改活动。所以我认为使用我所拥有的唯一方法是 View view = findViewById(R.id.startButtonLayout); view.setOnTouchListener(this);
    【解决方案3】:

    onTouch 可以用在 android.something like this use in ur activity.no need to override

          ed.setOnTouchListener(new OnTouchListener() {
    
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(), "hai",   Toast.LENGTH_LONG).show();
                    return false;
                }
            });
    

    【讨论】:

    • 这可能行不通,因为返回 false 表示不要使用该事件!
    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2015-12-16
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    相关资源
    最近更新 更多