自定义视图,继续传递事件?

时间:2014-06-26 15:51:43

标签: android android-listview ontouchevent

我有一个ListView。在单元格内部,我有一个自定义视图。 (你可以画画。)

绘图时,我关闭列表的滚动..

    theListView.setOnTouchListener(new View.OnTouchListener()
    {
    public boolean onTouch(View v, MotionEvent event)
        {
        if (event.getAction() == MotionEvent.ACTION_MOVE)
            {
            if ( STATE.weAreDrawoning )
                {
                return true;
                // so, do not forward and hence do not scroll the list
                }
            else
                {
                return false;
                }
            }
        return false;
        }
    });

没关系。但奇怪的是,在自定义视图中上下触摸,仍然传递到列表并使其滚动。

public class AmazingCustomView extends View
{
blah
@Override
    public boolean onTouchEvent(MotionEvent event)
        {
        blah

        return true;
        }
}

在自定义视图中注意onTouchEvent返回true(我也尝试过假!:))

但是动作事件似乎仍然传递给了什么?

是否还有另一个" on ... something"我在自定义视图中丢失了吗?对不起,Android和蹩脚的新手。谢谢!

PS,我试过打开"可点击"在自定义视图的xml上,没有帮助:O

-

更糟糕......

我刚刚实现了ListView中的所有控件,比如按钮,仍然"传递滚动"

我担心上面用来关闭滚动的系统并不好。 :/

重要...

对于在Google上搜索的人。我发现在android listView上关闭滚动的唯一真实方式...

danosipov.com/?p=604

(别忘了单独关闭你的刷新)

1 个答案:

答案 0 :(得分:1)

您可能需要覆盖onInterceptTouchEvent。这是一个奇怪的功能,文档在这里:http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29