当按钮在另一个地方时触发OnClickListener

时间:2014-01-13 11:50:06

标签: android onclicklistener imagebutton

我的应用中有四个ImageButton个。

enter image description here

可以在较大的按钮下方显示或“隐藏”三个较小的按钮。我使用旋转隐藏按钮并翻译动画。

问题是: 无论是否显示较小的按钮,OnClickListener的{​​{1}}方法始终会被触发。

我的意思是,当较小的按钮被“隐藏”时,触摸屏幕上的某个位置,其中一个较小的按钮位于显示位置时,会触发onClick方法。

在决定是否应该触发onClick方法时,Android OS似乎没有考虑按钮的实际位置。

我如何克服这个问题?

我只想在手指下面有一个按钮时调用onClick方法。

修改

所有建议的解决方法都依赖于隐藏按钮。这根本没有用。 onClick方法也会调用onClickINVISIBLE按钮。我在调试器中检查了这个。

7 个答案:

答案 0 :(得分:1)

看起来你要去的是Arc菜单。为什么不使用SiyamedDaCapricorn的强大实现,而不是重新发明轮子?

答案 1 :(得分:1)

您是否将Click界面设置为您的活动并在onClickListener上实现?如果需要,您需要通过设置所有按钮的if(arg0 == button1)等条件来分隔按钮。

答案 2 :(得分:1)

问题是由于补间动画(原始动画框架)为像素设置动画而不是窗口小部件的触摸区域。

我用property animations替换了补间动画,现在一切都像我希望的那样有效。

答案 3 :(得分:0)

我建议在完成动画后将按钮可见性设置为GONE。

更新:

另一个建议是让一个没有动画的按钮(问题不应该发生)和一个隐藏按钮后动画的图像(图形相同)。图片不应该在大按钮下接收任何点击,并且真正的按钮在隐藏时不应该收到点击。

答案 4 :(得分:0)

设置

btn.setVisibility(View.INVISIBLE);

不会调用onClick方法,其中按钮不可见。我测试了它。因此,您可能会在不必要的视图中注册onClick侦听器。

答案 5 :(得分:0)

尝试使用layout.xml中按钮的属性onClick来设置监听器(例如

android:onClick="onClickButtonCamera"

然后声明一个具有相同名称的公共函数,如:

public void onClickButtonCamera(View view) {
    //some stuff...
}

我总是使用它,隐藏按钮时永远不会调用该函数。 我希望它可以帮助你。

答案 6 :(得分:0)

我认为有三种方法可以解决这个问题。

1)如果您设置onClick Listener,则在隐藏按钮时将其设置为null,并在显示时设置侦听器。

2)在每个按钮上添加一个关于其可见性的onclick,只需返回;当按钮的可见性不可见时的功能(使用功能button.getVisibility()!= View.VISIBLE)

3)最后一个不确定,通常设置已消失,因为可见性将防止其点击。