我有RecyclerView
,在某些情况下,我在其上显示了另一个视图 - ProgressDialog
,AlertDialog
或DialogFragment
。监听器检测视图是否在前面?
有没有办法通知我有关当我的RecyclerView
在前面或另一个视图在上面的情况?
我试着将onFocusChangeListener()
添加到我的RecyclerView
,但没有运气。
PS。当然,我可以在我的RecyclerView
中创建一些方法isOnFront(boolean onFront)
并在我所有的其他视图中调用它,但也许有一些更优雅的方式?
我有棘手的解决方案,如果你的情况就像显示'ProgressDialog','AlertDialog'或'DialogFragment',那么你应该重写'onPause()'和'onResume()'活动或片段,你的'Recyclerview '被执行。显示对话框将调用onPause()方法,并且关闭该对话框将调用该活动的onResume(),从中您可以知道“RecyclerView”是否处于焦点状态。 – Moinkhan
不,这不起作用,因为我从相同的活动中显示对话框。此外,由于对话框应该是模态的,我通过'FragmentManager.add()'而不是'FragmentManager.replace()'添加它们。所以'onPause()'根本就没有调用。 –
好吧,你可以在后台堆栈上工作。你可以找出片段是否存在。 – Moinkhan