【发布时间】:2011-11-09 14:32:55
【问题描述】:
我在这方面遇到了可怕的问题。我有一个 MapView,在我的活动中我设置了标志以显示缩放控件,它可以工作。但随后用户导航到另一个活动,返回地图,缩放控件消失了。
是否有一种简单的方法可以确保始终存在缩放控件,或者我是否需要自己滚动?理想情况下,我想在 MapView 的子类中设置缩放控件以保持简单。我怀疑它失败了,因为缩放控件是在错误的时间设置的,但是什么时候是正确的时间?
【问题讨论】:
标签: android
我在这方面遇到了可怕的问题。我有一个 MapView,在我的活动中我设置了标志以显示缩放控件,它可以工作。但随后用户导航到另一个活动,返回地图,缩放控件消失了。
是否有一种简单的方法可以确保始终存在缩放控件,或者我是否需要自己滚动?理想情况下,我想在 MapView 的子类中设置缩放控件以保持简单。我怀疑它失败了,因为缩放控件是在错误的时间设置的,但是什么时候是正确的时间?
【问题讨论】:
标签: android
这就是我所做的。首先使用您的 MapView 将 ZoomControl 视图添加到文件中(我使用的是 RelativeLayout 来保存 MapView 和 ZoomControls)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="X"
android:clickable="true" />
<ZoomControls
android:id="@+id/zoomcontrols"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
现在在你的 onCreate 方法中做类似的事情
mapView.setBuiltInZoomControls(false);
ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mapController.zoomIn();
}
});
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mapController.zoomOut();
}
});
【讨论】:
你可以很容易地做到这一点。
在onCreate() 方法上做:
MapView mapView = (MapView) findViewById(R.id.map_view_id);
mapView.setBuiltInZoomControls(true);
这样,缩放按钮就会出现在屏幕底部。如果现在触摸事件发生一小段时间,它们就会消失,如果发生任何触摸事件,它们会自动再次出现。
【讨论】: