我正在内部编写代码,以便在将布局放置在屏幕上之前在ViewGroup(自定义)中设置几个项目。
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
super.onLayout(changed, left, top, right, bottom)
if (!isLaidOut) {
layoutSetup() //where i setup UI when layout is laid out for first time
//or when configuration is changed
}
}
在设备配置上更改上面的代码在Samsung上运行正常 设备(已调整的android)和layoutSetup()被调用一次。没有问题。
但是
用例:
在设备配置上,调用上述代码layoutSetup()进行更改 多次在Google Pixel中(以及其他库存的Android手机中)。为什么 该设备特定的电话吗?
当配置从 landscape (使用键盘在屏幕上显示的)更改为肖像 isLaidOut被调用两次,并且islayOut为在调试布局时将其设置为 true 不会在屏幕上布局。(发生在onLayout的下一个回调中,但isLaidOut == true)
问题是:
如何使View智能化配置更改?我不能使用下面的回调,因为我有不同的配置布局(土地/港口)
override fun onConfigurationChanged(newConfig: Configuration?) {
super.onConfigurationChanged(newConfig)
}
注意:我尝试使用view.post()并没有解决问题,并且post方法不是首选,因为我想对代码流进行更多控制。 而且只有一个特定的用例有问题,其他的都可以正常工作
android:windowSoftInputMode =“ adjustResize” 没有它,我的活动清单中声明的错误不存在。