如何知道,什么android对话框是在屏幕上



我有两个或多个android对话框。所有的对话框都显示出来了,但是一个对话框重叠另一个对话框。怎么知道屏幕上有什么对话?这样的:

dialog1.show();
dialog2.show();
// dialog1.isOnScreen() == false; dialog2.isOnScreen() == true; 
// Because dialog2 overlaps dialog1

我猜你想知道当前视图有焦点。

可以使用getCurrentFocus()

继续阅读

Dialog有一个isShowing()方法,如果对话框当前可见,该方法应该返回。你可以用它来查看一个对话框是显示还是关闭。

在您的情况下,代码片段将是(可能不是完美的解决方案),

if(dialog1.isShowing())
{
}
else if(dialog2.isShowing())
{
}

我解决了这个问题:

    public static boolean isActiveDialog(Dialog dialog) {
    if (!dialog.isShowing())
        return false;
    Window dialogWindow = dialog.getWindow();
    if (dialogWindow != null) {
        View decorView = dialogWindow.getDecorView();
        if (decorView != null)
            return decorView.hasWindowFocus();
    }
    return false;
}

但是如果应用程序不在屏幕上,该函数将返回"false"

最新更新