我试图正确设置通常位于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
我这里缺少什么吗?