当View集的isLaidOut为True / False时? (安卓)

时间:2018-11-27 10:26:44

标签: android android-layout android-view

我正在内部编写代码,以便在将布局放置在屏幕上之前在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)

问题是:

  1. 何时设置isLaidOut值?
  2. 还有什么其他方法可以解决相同的问题?
  3. 如何使View智能化配置更改?我不能使用下面的回调,因为我有不同的配置布局(土地/港口)

        override fun onConfigurationChanged(newConfig: Configuration?) {
           super.onConfigurationChanged(newConfig)
        }
    

注意:我尝试使用view.post()并没有解决问题,并且post方法不是首选,因为我想对代码流进行更多控制。 而且只有一个特定的用例有问题,其他的都可以正常工作

  

android:windowSoftInputMode =“ adjustResize”   没有它,我的活动清单中声明的​​错误不存在。

0 个答案:

没有答案