android bottomSheet无法以编程方式更新子尺寸

问题描述

我很难解释这个问题,但是您可以看到以下布局代码, 首先,我的布局看起来像这样:

enter image description here

enter image description here

是的,这是使用webrtc的呼叫屏幕,当我有视频时,将其放到main_render中,当我有视频大小的委托时更改大小:

main_render.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT)
        main_render.init(rootEglBase.eglBaseContext,object : RendererCommon.RendererEvents{
            override fun onFirstFrameRendered() {
                Log.e(TAG,"onFirstFrameRendered")
            }

            override fun onFrameResolutionChanged(i: Int,i1: Int,i2: Int) {
                Log.e(TAG,"onFrameResolutionChanged: $i - $i1")
                runOnUiThread {
                    val newParams = main_render.layoutParams as FrameLayout.LayoutParams
                    newParams.width = dm.widthPixels
                    newParams.height = i1 * dm.widthPixels / i
                    main_render.layoutParams = newParams
                    main_render.requestLayout()
                    main_layout.updateViewLayout(main_render,newParams)
                    main_layout.requestLayout()
                }
            }
        })

但是问题是大小没有改变,我必须按以隐藏工作表,再次按以显示工作表,然后现在大小发生变化(我可以单击以隐藏和显示折叠工作表)

有人可以帮我知道这个问题吗,当移除工作表并使用main_layout时,它可以正常工作,但是使用工作表时,大小无法立即更改

解决方法

如果有帮助,请尝试在更新视图布局后设置BottomSheet的状态:

  val behavior = bottomSheetDialog.behavior
        behavior.state = BottomSheetBehavior.STATE_EXPANDED