Android 10之后,用户可以选择手势导航模式。我想检测设备是否处于手势导航模式。我将根据系统导航偏好改变设计。
我在文档中找不到任何东西。怎么做呢?
你有任何官方API或解决方案吗?
从Android 30开始,我们可以获得系统插页来检查手势导航是否启用。
如果启用了手势导航,那么WindowInsets.Type.systemGestures()
的inset.left
和inset.right
的值将大于0。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
binding.root.apply {
var hasGesture = false
doOnAttach {
val inset = it.rootWindowInsets?.getInsets(WindowInsets.Type.systemGestures())
println("inset: left: ${inset?.left} right: ${inset?.right} top:${inset?.top} bottom: ${inset?.bottom}")
val margin = it.rootWindowInsets?.getInsets(WindowInsets.Type.systemGestures())?.left ?: 0
hasGesture = margin > 0
}
}
}