android - Android 获取屏幕可用大小 api 28
问题描述
我已经尝试了很多东西,比如:
val wm = c.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val size = Point()
display.getSize(size)
screenHeight = size.y
最后,跨不同设备尺寸最通用的一种是:
val v = requireActivity().findViewById<ViewGroup>(android.R.id.content)
v.viewTreeObserver.addOnGlobalLayoutListener(object: ViewTreeObserver.OnGlobalLayoutListener{
override fun onGlobalLayout() {
v.viewTreeObserver.removeOnGlobalLayoutListener (this)
val editor = sharedPreferences.edit()
editor.putInt("usableScreenHeight", v.height)
editor.apply()
}
})
我也在一些真实的设备上对此进行了测试,它似乎有效。但是,在我的 Android Studio 模拟器中,使用 Api 28(例如,它适用于相同的设备和 api 24),我得到了一个更大的状态栏,就像图片中的那个一样。我通过的大小viewTreeObserver
是相同的,但是由于状态栏更大,我的内容向下移动。我的代码错了吗?我的模拟器有问题吗?有什么变化api 28
吗?
解决方案
推荐阅读
- firefox - 如何强制网页认为它在 FireFox 中处于焦点或焦点之外?
- go - 我可以使用指向“错误”的指针来捕获返回错误吗?
- python - 为什么我们使用 numpy.argmax() 从 numpy 预测数组中返回索引?
- django - django - 在媒体下上传文件夹
- tensorflow - 我们可以在 keras 的全连接层中冻结选定的神经元吗?
- java - Hazelcast 集群通过缓存使 jvm 摆脱内存泄漏
- php - CakePHP Ubuntu 导出 Excel
- php - 使用子数组值 3 维数组更改父键
- c++ - 使用命名空间时如何在头文件和 .cpp 文件之间正确定义 C++ 类
- r - 向量条目发生变化?