Android:快餐店未正确显示在SupportMapFragment顶部

Android:快餐店未正确显示在SupportMapFragment顶部,android,kotlin,android-coordinatorlayout,supportmapfragment,Android,Kotlin,Android Coordinatorlayout,Supportmapfragment,活动中使用的布局(适用于谷歌地图) 以下是屏幕截图和一些症状: 对于标记的初始单击: 请注意黑色细线条。那是小吃店。 但是如果我点击地图主体中的任何地方,而不是一个标记,小吃店就会变得正常 更重要的是,如果我将uiSettings.isMapToolbarEnabled设置为false,默认工具栏将被隐藏,但快餐店从未出现。我甚至根本看不到那条黑色的细线,不管我发出什么样的声音 this.googleMap?.uiSettings?.isMapToolbarEnabled = false 一

活动中使用的布局(适用于谷歌地图)

以下是屏幕截图和一些症状:
对于标记的初始单击: 请注意黑色细线条。那是小吃店。

但是如果我点击地图主体中的任何地方,而不是一个标记,小吃店就会变得正常

更重要的是,如果我将uiSettings.isMapToolbarEnabled设置为false,默认工具栏将被隐藏,但快餐店从未出现。我甚至根本看不到那条黑色的细线,不管我发出什么样的声音

this.googleMap?.uiSettings?.isMapToolbarEnabled = false
一个类似的问题。
我拍摄的手机截图是Nexus5。原生安卓6.0.1,Nexus 5可以支持的最新操作系统。

根本原因已经基本找到。在全屏模式下,快餐店被SystemUI隐藏。人们可以很容易地复制这个问题

在我的例子中,以下是导致问题的代码片段

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if (hasFocus) hideSystemUI()
}

private fun hideSystemUI() {
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    // or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    // or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    // or View.SYSTEM_UI_FLAG_FULLSCREEN
                    // to hide the nav bar and status bar
                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
模式
SYSTEM\u UI\u FLAG\u IMMERSIVE
SYSTEM\u UI\u FLAG\u IMMERSIVE\u STICKY
几乎一直隐藏快餐店,如问题主体所述,无论用户如何或在何处单击
而第三个全屏模式(不带任何一个标志),即向后倾斜模式(),只从第二次单击中响应用户的有效快餐店。通过显示SystemUI的状态栏和导航栏,来自用户的第一次单击将作为从精益模式返回使用。

所以现在这个问题的一个快速解决方案是禁用沉浸式标志。但我对此并不满意。将继续寻找更好的答案。

更重要的是,我尝试了Stackoverflow的解决方案,或者通过设置适当的z索引,或者
LayoutParam
,这些都没有达到我想要的效果:在沉浸式(粘性)全屏上显示一个快餐店

更新日期:20191102:
据英国《每日邮报》报道,快餐店不被认为是显示太多文本的合适方式,也不建议使用图标。我应该依赖的适当的UI组件是。

基本上已经找到了根本原因。在全屏模式下,快餐店被SystemUI隐藏。人们可以很容易地复制这个问题

在我的例子中,以下是导致问题的代码片段

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if (hasFocus) hideSystemUI()
}

private fun hideSystemUI() {
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    // or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    // or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    // or View.SYSTEM_UI_FLAG_FULLSCREEN
                    // to hide the nav bar and status bar
                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
模式
SYSTEM\u UI\u FLAG\u IMMERSIVE
SYSTEM\u UI\u FLAG\u IMMERSIVE\u STICKY
几乎一直隐藏快餐店,如问题主体所述,无论用户如何或在何处单击
而第三个全屏模式(不带任何一个标志),即向后倾斜模式(),只从第二次单击中响应用户的有效快餐店。通过显示SystemUI的状态栏和导航栏,来自用户的第一次单击将作为从精益模式返回使用。

所以现在这个问题的一个快速解决方案是禁用沉浸式标志。但我对此并不满意。将继续寻找更好的答案。

更重要的是,我尝试了Stackoverflow的解决方案,或者通过设置适当的z索引,或者
LayoutParam
,这些都没有达到我想要的效果:在沉浸式(粘性)全屏上显示一个快餐店

更新日期:20191102: 据英国《每日邮报》报道,快餐店不被认为是显示太多文本的合适方式,也不建议使用图标。我应该依赖的适当UI组件是

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if (hasFocus) hideSystemUI()
}

private fun hideSystemUI() {
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    // or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    // or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    // or View.SYSTEM_UI_FLAG_FULLSCREEN
                    // to hide the nav bar and status bar
                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    or View.SYSTEM_UI_FLAG_FULLSCREEN)
}