2011-10-22 47 views
4

我有一个按钮,可以通过onClick处理程序处理。同时处理onClick和onTouchEvent事件

但是,我也需要响应onTouchEvent事件,以便我可以处理按钮高亮。

问题是,如果我从我的onTouchEvent处理程序返回“false”,它将在onClick处理程序中调用,但永远不会为随后的“up”事件给我一个onTouchEvent。

如果我从onTouchEvent返回“true”,那么我得到“up”事件,但它永远不会将触摸发送到onClick。

那么我有什么选择?

  1. 实现自己的“点击”处理中的onTouchEvent - 这意味着我将需要跟踪和按钮区域移动等似乎有点复杂。

  2. 我可以让我的按钮使用选择器而不是单个图像,并为不同的状态分配不同的图像。我遇到的问题是,选择器很麻烦,以至于更改图像,我需要这样做。 (当我的应用程序是在不同的“模式”,为不同状态下的按钮图像而改变。同样,这似乎过于复杂。

是不是有一个简单的方法来完成这一切???

+0

让我看看我是否理解正确。你想用你自己的方式覆盖Button的默认突出显示?如果是这样,你可以在onTouch中做所有突出显示的东西,并在收到ACTION_UP时调用button.performClick()。如果设置了onclicklistener,performClick会调用按钮的onClick方法。 –

回答

1

这似乎是你最好的选择将上面的选项2,茎。

我建议创建多个ButtonStateListDrawable选择,然后以编程方式使用Button.setBackgroundResource()风格之间进行切换。

+0

这是一个好主意。然而我实际上做的是每当我想改变图像时重写整个StateListSelector。不过,我想让问题保持开放,以便如何同时处理onClick和onTouchEvents。 – Brad

相关问题