这两个控件分别显示poi搜索出来的数据,以及地图。那么首先listview是隐藏的,只有poi搜索出来数据后设置listview后才会显示,这个时候mapview又向右移动对吧?那么有个问题,就是当listview显示出来时,mapview自动向右侧调整位置,这个时候会闪黑屏,黑屏的大小和listview是一样的,这是为什么?
时间: 2024-03-27 19:40:38 浏览: 46
您提到的闪黑屏问题,可能是因为在显示ListView时,MapView的布局发生了变化,导致重新绘制。这时,系统会重新计算MapView的位置和大小,并将其放置在正确的位置,而这个过程可能会导致屏幕闪烁黑屏。
为了避免这个问题,您可以尝试以下方法:
在ListView显示前,先将其设置为不可见,而不是隐藏。这样,当ListView显示时,它只需要改变可见性,而不需要重新计算布局,因此也不会导致MapView的重新绘制。
```
listView.setVisibility(View.INVISIBLE);
```
在MapView的布局文件中,添加如下属性:
```
android:hardwareAccelerated="true"
```
这个属性可以启用硬件加速,从而提高绘制性能,减少闪烁黑屏的现象。
如果以上方法仍然不能解决问题,您可以尝试使用帧布局(FrameLayout)作为根布局,这样在ListView显示时,它会覆盖在MapView上方,而不会影响MapView的布局。
```
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- MapView -->
<com.baidu.mapapi.map.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- ListView -->
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"/>
</FrameLayout>
```
在这个布局中,我们使用了FrameLayout作为根布局,并将MapView放在第一个位置,这样它会覆盖在ListView上方。而ListView设置了可见性为不可见,只有在需要显示时才将其设置为可见。这样做的好处是,当ListView显示时,它只会遮挡MapView,而不会影响MapView的布局,因此也不会导致黑屏闪烁的问题。
阅读全文