gpt4 book ai didi

android - 监听器检测 View 是否在前面?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:57 26 4
gpt4 key购买 nike

我有 RecyclerView,在某些情况下,我会在它上面显示另一个 View - ProgressDialogAlertDialogDialogFragment

当我的 RecyclerView 位于最前面或另一个 View 现在位于其上方时,有什么方法可以通知我吗?

我尝试将 onFocusChangeListener() 添加到我的 RecyclerView,但没有成功。

附言。当然,我可以在我的 RecyclerView 中创建一些方法 isOnFront(boolean onFront) 并在我的所有其他 View 中调用它,但也许有一些更优雅的方法?

最佳答案

ProgressDialogAlertDialogDialogFragment 会将它们的内容放在 Window 上,不会 到您的 Activity/fragment 的 View 层次结构。这意味着,只要显示其中一个,Window 的焦点就会改变。因此,您可以使用 ViewTreeObserver#addOnWindowFocusChangeListener()应用程序接口(interface):


contentView.getViewTreeObserver().addOnWindowFocusChangeListener(
new ViewTreeObserver.OnWindowFocusChangeListener() {
@Override public void onWindowFocusChanged(boolean hasFocus) {
// Remove observer when no longer needed
// contentView.getViewTreeObserver().removeOnWindowFocusChangeListener(this);

if (hasFocus) {
// Your view hierarchy is in the front
} else {
// There is some other view on top of your view hierarchy,
// which resulted in losing the focus of window
}
}
});

关于android - 监听器检测 View 是否在前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com