textview 的 ontouch 方法返回值

来源:互联网 发布:seo软件 编辑:程序博客网 时间:2024/06/16 22:45


tv.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction() ) {
            case MotionEvent.ACTION_DOWN:
                System.out.println("action_down");
                break;
case MotionEvent.ACTION_MOVE:
                System.out.println("action_move");
                break;
case MotionEvent.ACTION_UP:
                System.out.println("action_up");
                break;
        }
        return true;
    }
});

textview 的 ontouch 方法返回值为true 时可以响应 down , move , up  事件。

而为false 时只能响应down事件。

 (原因我感觉是 ontouch 返回ture代表自己消费掉了事件,

  false :   在ACTION_DOWN执行完后,后面的一系列action都不会得到执行了。这又是为什么呢?因为ImageView和按钮不同,它是默认不可点击的,因此在onTouchEvent的第14行判断时无法进入到if的内部,直接跳到第91行返回了false,也就导致后面其它的action都无法执行了。)

 

为textview增加了点击事件之后

tv.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        System.out.println("onclick");    }});

textview 的 ontouch 方法返回值为true 时可以响应 down , move , up  事件。

为false 时会依次调用down move ,up,onclik方法。 (原因不明,回头补上。)


结论:如果将textview 换成button  则无论返回ture还是false   down , move , up  都会执行。
0 0