我希望在移动、缩放和捏合地图视图时,禁止拦截Listview的触摸操作,并且地图视图位于Listview的头部视图中。
我有一个包含所有商店的ListView。我已经将另一个布局xml设置为List View Header并将其添加到主ListView中。
ListView Header
<com.google.android.gms.maps.MapView
android:id="@+id/mapViewStores"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="10dp" />
StoreList.java 是一个扩展了 Fragment 的类。
MapView mapView; //Map View
GoogleMap mapStoreList; //For Markers on Map
listViewStoreData.addHeaderView(headerViewForStoreList);
mapView = (MapView) headerViewForStoreList
.findViewById(R.id.mapViewStores);
mapView.onCreate(savedInstanceState);
if (mapView != null) {
mapStoreList = mapView.getMap();
mapStoreList.getUiSettings().setMyLocationButtonEnabled(true);
mapStoreList.setMyLocationEnabled(true);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(
new LatLng(latitude, longitude), 13);
mapStoreList.animateCamera(cameraUpdate);
}
我已经编写了代码来禁止拦截父视图的触摸事件。
mapStoreList.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
this.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_DOWN:
this.getParent().requestDisallowInterceptTouchEvent(true);
break
}
return super.onTouchEvent(ev);
}
});
很遗憾,它没有起作用。
但是当将OnTouchListener
设置为ListView
对象时,它会记录事件。
listViewStoreData.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
Log.e("MotionEvent", "Move");
break;
case MotionEvent.ACTION_UP:
Log.e("MotionEvent", "Up");
break;
case MotionEvent.ACTION_DOWN:
Log.e("MotionEvent", "Down");
break;
case MotionEvent.ACTION_CANCEL:
Log.e("MotionEvent", "Cancel");
break;
case MotionEvent.ACTION_POINTER_INDEX_MASK:
Log.e("MotionEvent", "Pointer Index Mask");
break;
case MotionEvent.ACTION_POINTER_INDEX_SHIFT:
Log.e("MotionEvent", "Pointer Index Shift");
break;
}
return false;
}
});
那么,我该如何从这种情况中摆脱?
是否有可能我们无法获取 'OnTouchListerner
' 以便对 ListView
的子项 -> 页眉视图的子项 -> MapView
进行操作?
任何帮助都将不胜感激。