Хитрость здесь в том, чтобы поместить другой контейнер Layout, в который вы хотите поместить ZoomControls, а затем вставить ZoomControls в него.
Настоящий трюк заключается в использовании RelativeLayout
вместо LinearLayout
для позиционирования элементов, как показано в этом примере layout.xml
:
<?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">
<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="MY_MAP_API_KEY"
/>
<LinearLayout android:id="@+id/layout_zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
Элемент layout_zoom LinearLayout располагается в нижней центральной части экрана, располагая его над серединой / нижней частью MapView
.
Затем в onCreate
вашей Деятельности получите ссылку на элемент layout_zoom и вставьте в него элемент ZoomControl, как вы уже сделали:
LinearLayout zoomLayout =(LinearLayout)findViewById(R.id.layout_zoom);
View zoomView = myMapView.getZoomControls();
zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myMapView.displayZoomControls(true);
ZoomControls теперь должен появляться при длинном щелчке, без кражи событий касания карты.