首页 分享 Android百度地图 关于visibility=“gone”的奇葩问题

Android百度地图 关于visibility=“gone”的奇葩问题

来源:花匠小妙招 时间:2025-07-11 22:20

最新推荐文章于 2021-05-31 08:20:45 发布

weixin_30760895 于 2016-01-29 11:46:00 发布

最近在项目中遇到一个奇葩问题,花了很长时间,在这里记录下。

问题描述:我的主界面是ViewPager+Fragment,并且设置缓存了我的4个ViewPager页面。左侧是一个侧滑菜单,点击相应按钮打开不同的Activity。右边的大片区域用的是FrameLayout将自定义地图和百度地图叠加全屏显示。左下角有一个按钮用于切换自定义地图和百度地图的显示,其实就是MapView的visibility="gone"和visibility="visible"的操作。简单画了下效果图:

问题来了,我进入该主界面,只要我点击btn进行地图显示的切换过,也就是说百度地图曾经显示过(visible),当我再打开其他activity,Back键返回到该Fragment时,百度地图就显示了,下面的按钮btn也被遮盖掉了,无论我之前是否将它隐藏(gone)掉过。在两个真机Android4.4的设备上运行没有这个情况,在其他Android4.0,4.1的设备上有这个问题,但是将gone换成invisible也不会有这个问题,但是这样的话就达不到我想要的效果了。

解决:

思路一:打印从进入到该Fragment,点击按钮,打开activity,back键返回该Fragment这一过程的log:

在onStop()中记住百度地图的显示状态(控件MapView),在onResume()中根据保存的值去控制百度地图的显示,获取到的值是正确的,但是控制MapView隐藏的代码却没有效果。

思路二:前面说过的4.4的设备运行没有问题,难道是版本问题?虽说gone,是让控件不占空间,但是这并不是问题的关键,真不知从何下手。

思路三:在百度地图Android API上找到问题原因,这应该是百度地图自身的一个bug(以后还是得细看文档啊)

但是即使知道了这个问题,还是不能完美的解决我的问题,最后我的onResume()中延迟了较短的时间,再将百度地图(MapView)隐藏或者显示。

@Override public void onResume() { mMapView.setVisibility(View.VISIBLE); // MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume() mMapView.onResume(); super.onResume(); Log.i("yanqiong", "onResume===="+remBaiduMap); baiduMapHandler.postDelayed(baiduMapRunnable, 900); }

Handler baiduMapHandler=new Handler(); Runnable baiduMapRunnable=new Runnable() { @Override public void run() { if(isShowBaiduMap){ webView.setVisibility(View.GONE); mMapView.setVisibility(View.VISIBLE); }else{ webView.setVisibility(View.VISIBLE); mMapView.setVisibility(View.GONE); } baiduMapHandler.removeCallbacks(this); } };

转载于:https://www.cnblogs.com/Joanna-Yan/p/5168516.html

相关知识

Android百度地图 关于visibility=“gone”的奇葩问题
android gone 空白,android:visibility=“gone” (动画布局入的一次坑)
Android最新的Tint,能玩出什么花?
android 项目中嵌入百度地图遇到的坑及错误LocationAuthManager Authentication Error errorcode = 230
百度全景地图app(街景)下载
百度地图导航沈腾语音版
of days gone by
百度地图
百度地图app下载安装
百度地图2025年

网址: Android百度地图 关于visibility=“gone”的奇葩问题 https://www.huajiangbk.com/newsview2141837.html

所属分类:花卉
上一篇: Google地图错误标注高速公路
下一篇: Americane:美国地区信息

推荐分享