ここでのコツは、ZoomControls を配置したい場所に別の Layout コンテナを配置し、そこに 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
.
次に、Activity 内で、 layout_zoomonCreate
要素への参照を取得し、 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 は、地図のタッチ イベントを盗むことなく、長いクリックで表示されるようになりました。