使用View.GONE的android视图仍然接收onTouch和onClick

Sha*_*are 73 android visibility view onclick

这令我困惑:

据我所读,有一个setVisibility(View.GONE)的视图; 不应再接收任何触摸或点击事件.我的布局有两个部分,它们将是可见的或消失的,因此一次只能看到其中一个部分,但View.GONE不能解决这个问题.我无法按预期看到GONE视图,但它仍然对onClick做出反应(并消耗其他视图应该获得的事件).

你能帮助我吗?

也许有趣:当我开始我的项目时,一个视图是GONE,另一个视图是可见的.这次它将按预期工作(GONE视图基本上被忽略),但在通过代码设置View.GONE后它将停止工作.

edo*_*ino 109

你是否可以使用动画来显示/隐藏视图?当我使用具有android的动画时我得到这种行为:fillEnabled ="true"android:fillAfter ="true"不理解它,并且看起来像一个bug - 如果我使用没有fillEnabled/fillAfter的动画,一切都按预期工作. ..

  • 有没有可用的解决方案?我正在使用nineoldandroids并在API10上看到这种行为 - 我认为它使用fillEnabled来模拟动画后修改视图属性的3.0 API行为. (2认同)

Pav*_*eev 100

如果您setVisibility(View.GONE)在某个动画后设置(例如淡出),请尝试使用清除动画clearAnimation().这对我有所帮助.

  • 这是最好的aswer,谢谢!@osayilgan,在这种情况下,你只需要在动画结束后设置一个onEndAnimation侦听器和clearAnimation(). (9认同)
  • 这是一个更好的答案.在某些情况下,您希望在动画中使用`android:fillAfter`和`android:fillEnabled`,并且您希望视图停止响应. (3认同)
  • @osayilgan你应该把`clearAnimation()`调用到`onAnimationEnd()`方法中.然后它按预期工作. (2认同)

Ani*_*nil 8

尝试在setVisibility(View.GONE)之后使用setClickable(false)将clickable属性设置为false


Hem*_*ori 5

是的,mview.clearAnimation()有一些issuses但amination.setFillAfter(false);mview.setClickable(false);完美的作品.