android - setOnApplyWindowInsetsListener 从未调用过
问题描述
我想计算导航栏的高度。我看过这个演示文稿:https ://chris.banes.me/talks/2017/becoming-a-master-window-fitter-nyc/
所以,我尝试使用该方法View.setOnApplyWindowInsetsListener()
。但是,由于某种原因,它从未被调用过。
有谁知道为什么?有什么限制吗?
我试过这样使用它:
navBarOverlay.setOnApplyWindowInsetsListener { v, insets ->
Timber.i("BOTTOM = ${insets.systemWindowInsetBottom}")
return@setOnApplyWindowInsetsListener insets
}
请注意,我的根布局是ConstraintLayout
.
解决方案
我遇到了同样的问题。
如果您的根视图是 ConstraintLayout 并且包含 android:fitsSystemWindows="true" attr,则该视图使用 onApplyWindowInsets 回调。因此,如果您在子视图上设置 onApplyWindowInsets,它们将永远不会获得 onApplyWindowInsets 回调。
或检查您的父视图是否使用回调。
推荐阅读
- itext - iText 与 PDF 1.6 的兼容性
- html - 带有弹性框的 CSS 动画搜索框
- java - Java:删除/打包方法,有人可以解释一下吗?
- r - R并行处理错误`checkForRemoteErrors(val)中的错误:6个节点产生错误;第一个错误:下标越界`
- apache-commons-csv - Apache Commons CSV:如果标头不存在,则避免 IllegalArgumentException
- javascript - 向下钻取后,向上钻取按钮与图表重叠
- spring - 如何确保解析期间的异常导致与验证失败返回的(自定义)响应相同类型的响应?
- vbscript - 满足条件时读写文本文件
- javascript - 数组返回未定义 - 依赖注入?角/打字稿
- python - 如何更改 skfuzzy ControlSystem 中的规则?