ViewCompat.setOnApplyWindowInsetsListener() 更改系统导航栏的背景

use*_*924 5 android windowinsets

应用程序通常有这样的导航栏:

在此输入图像描述

但是当我添加ViewCompat.setOnApplyWindowInsetsListener()

ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { _, insets ->
    binding.showingKeyboard = insets.isVisible(WindowInsetsCompat.Type.ime())
    WindowInsetsCompat.CONSUMED
}
Run Code Online (Sandbox Code Playgroud)

或者

ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { _, insets ->
    binding.showingKeyboard = insets.isVisible(WindowInsetsCompat.Type.ime())
    insets
}
Run Code Online (Sandbox Code Playgroud)

就变成这样了

在此输入图像描述

为什么会发生这种情况?我不希望这个方法改变任何东西。我只是想用它来检测虚拟键盘是否可见(没有其他好的方法可以做到这一点)

小智 0

调用setOnApplyWindowInsetsListener布局的根视图,而不是window.decorView