我已将应用程序的用户界面设计为视图的集合,而不是活动或片段的集合。我管理这些视图的显示和隐藏,这些视图相互重叠。
我相信我为我的应用选择了错误的设计原则。我遇到的问题是,当我隐藏视图以显示另一个视图时;驻留在隐藏视图上的按钮将触发其单击侦听器。
在阅读了一些Android参考文档之后,我看到视图树将在视图的层次结构中向下导航,以消耗touch事件。然后,将调用此按钮的单击侦听器。
我需要做的是防止隐藏视图中的按钮在用户触摸显示的视图时停止自行调用。我知道调用setVisibility(View.INVISIBLE)可以阻止单击点击侦听器。
我在考虑ViewTreeObserver类,该类将允许我创建视图层次结构的侦听器,该监听器以某种方式允许我获取所有隐藏视图的句柄,以便在隐藏视图上调用setVisibility(View.INVISIBLE)。< / p>
任何想法或建议
答案 0 :(得分:1)
对视图执行setVisibility(View.INVISIBLE)
时,它仍将出现在布局中。因此,请尝试使用setVisibility(View.INVISIBLE)
而不是setVisibility(View.GONE)
。
这会将视图从包括其附带的onClickListner的布局中完全删除。
想要返回该视图时,可以使用setVisibility(View.VISIBLE)
将其取回。