动态设置BottomSheet后面的视图高度以填充图纸上方的空间

时间:2019-12-14 07:52:44

标签: android android-coordinatorlayout android-jetpack bottom-sheet

我试图正确设置通常位于BottomSheet后面的视图的高度(下例中的mapfragment)。

我希望底部工作表能够保持半开状态,并且可以选择扩展到全屏,但不能完全折叠。这些uber examples的两个右屏幕上的所需功能示例。为此,我将窥视高度设置为屏幕宽度的一半,并将地图片段高度设置为一半,这很有效

        // Get bottom nav height
        var navBarHeight = 0
        val navBarId = resources.getIdentifier("navigation_bar_height", "dimen", "android")
        if (navBarId > 0) {
            navBarHeight = convertDpToPixel(resources.getDimensionPixelSize(navBarId))
        }
        // Set bottom sheet "persisted" open height
        val metrics = resources.displayMetrics
        bottomSheetBehavior.peekHeight = metrics.heightPixels / 2

        // programmatically set map height
        val params = mapFragment?.view?.layoutParams
        params?.height = (metrics.heightPixels / 2) - navBarHeight
        mapFragment?.view?.layoutParams = params

但是,此屏幕截图显示了一个问题-fragment height mismatch-由于未考虑到某些插图,因此略微覆盖了地图上的“ Google”徽标和“找到我”按钮。

我假设我必须动态考虑插图和底部导航才能获得正确的高度。尽管考虑到设备和版本之间的大小不同,这似乎很容易出错。我必须想象有更好的方法,不是吗?

由于BottomSheet组件的限制,我无法将FrameLayout包装在LinearLayout中并使用layout_weight解决方案,因为它必须是{{ 1}}。

CoordinatorLayout

我这里缺少什么吗?

0 个答案:

没有答案