活动中使用的布局(适用于GoogleMap)
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_map"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/fr_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.MapActivity" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
在同一活动中,这是单击标记时创建小吃店的方式。
override fun onMarkerClick(p0: Marker?): Boolean {
Snackbar.make(findViewById(R.id.cl_map), "Hello World", Snackbar.LENGTH_INDEFINITE).show()
// finding android.R.id.content does not work either
// Snackbar.make(findViewById(android.R.id.content), "Hello World", Snackbar.LENGTH_INDEFINITE).show()
return false
}
这是屏幕截图和一些症状:
对于标记的初始点击:
请注意黑色细线。那是小吃店。
但是,如果我单击地图正文中的任何地方而不是标记,则小吃店将变得正常。
此外,如果将uiSettings.isMapToolbarEnabled设置为false,则默认工具栏将被隐藏,但小吃店将永远不会显示。无论我单击什么,我什至都看不到黑色的细线。
this.googleMap?.uiSettings?.isMapToolbarEnabled = false
一个类似的问题here。
我从中获取屏幕快照的手机是Nexus5。原生Android 6.0.1,是Nexus 5可以支持的最新操作系统。
最佳答案
根本原因已被发现。在全屏模式下,小吃栏被SystemUI隐藏。可以很容易地复制此问题here。
就我而言,这是导致问题的代码段
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_UI_FLAG_IMMERSIVE
和SYSTEM_UI_FLAG_IMMERSIVE_STICKY
几乎始终隐藏小吃店。第三个全屏模式(不带任何标志)为倾斜模式(GoogleDoc),仅通过第二次单击即可对用户提供有效的小吃店。通过显示SystemUI的状态栏和导航栏,来自用户的第一单击将作为从后仰模式返回的消耗。
因此,目前针对此问题的快速解决方案是禁用任一沉浸式标志。但是我对此不满意。将继续寻找更好的答案。
此外,我通过设置适当的z-index或
LayoutParam
在Stackoverflow上尝试了解决方案,但都没有达到我想要的效果:在沉浸式(粘性)全屏顶部显示小吃店。更新20191102:
根据Material Design Guidelines,小吃店不被认为是显示过多文本的合适方法,也不建议使用图标。我应该依赖的正确UI组件是Bottom Sheet。