我的应用中有四个ImageButton
个。
可以在较大的按钮下方显示或“隐藏”三个较小的按钮。我使用旋转隐藏按钮并翻译动画。
问题是:
无论是否显示较小的按钮,OnClickListener
的{{1}}方法始终会被触发。
我的意思是,当较小的按钮被“隐藏”时,触摸屏幕上的某个位置,其中一个较小的按钮位于显示位置时,会触发onClick
方法。
在决定是否应该触发onClick
方法时,Android OS似乎没有考虑按钮的实际位置。
我如何克服这个问题?
我只想在手指下面有一个按钮时调用onClick
方法。
修改
所有建议的解决方法都依赖于隐藏按钮。这根本没有用。 onClick
方法也会调用onClick
和INVISIBLE
按钮。我在调试器中检查了这个。
答案 0 :(得分:1)
看起来你要去的是Arc菜单。为什么不使用Siyamed和DaCapricorn的强大实现,而不是重新发明轮子?
答案 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)最后一个不确定,通常设置已消失,因为可见性将防止其点击。