我需要优化我的Android应用程序,使其在带有缺口的手机(例如Essential Phone)上看起来不错。
这款手机的状态栏高度与标准25dp值不同,因此您无法对该值进行硬编码。
昨天发布的Android P开发人员预览版包括对缺口的支持以及一些查询其位置和界限的API,但是对于我的应用程序,我只需要能够从XML获取状态栏的高度,而无需使用固定值。
不幸的是,我找不到从XML中获得这种值(value)的任何方法。
有什么办法吗?
谢谢你。
最佳答案
我已经found the answer:
推荐的方法是使用WindowInsets API,如下所示:
view.setOnApplyWindowInsetsListener { v, insets ->
view.height = insets.systemWindowInsetTop // status bar height
insets
}
强烈建议不要访问status_bar_height,因为status_bar_height是私有(private)资源,因此在以后的Android版本中可能会发生更改。