MapFragment in ScrollView

前端 未结 8 1781
再見小時候
再見小時候 2020-12-07 17:17

I have one of the new MapFragments in a ScrollView. Actually it\'s a SupportMapFragment, but anyway. It works, but there are two problems:

8条回答
  •  伪装坚强ぢ
    2020-12-07 18:17

    Done after lots of R&D:

    fragment_one.xml should looks like:

    
    
    
        
    
            
    
                
    
                
            
    
            
    
        
    
    
    

    Your Java class of FragmentOne.java looks like:

    private GoogleMap mMap;
    private MapView mapView;
    private UiSettings mUiSettings;
    private View customView
    

    onCreateView

    mapView = (MapView) rootView.findViewById(R.id.mapView);
    mapView.onCreate(savedInstanceState);
    
    if (mapView != null) {
       mMap = mapView.getMap();
       mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
       mUiSettings = mMap.getUiSettings();
       mMap.setMyLocationEnabled(true);
       mUiSettings.setCompassEnabled(true); 
       mUiSettings.setMyLocationButtonEnabled(false);
    }
    
    
    scrollViewParent = (ScrollView)rootView.findViewById(R.id.scrollViewParent);
    customView = (View)rootView.findViewById(R.id.customView);
    
    customView.setOnTouchListener(new View.OnTouchListener() {
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    int action = event.getAction();
                    switch (action) {
                        case MotionEvent.ACTION_DOWN:
                            // Disallow ScrollView to intercept touch events.
                            scrollViewParent.requestDisallowInterceptTouchEvent(true);
                            // Disable touch on transparent view
                            return false;
    
                        case MotionEvent.ACTION_UP:
                            // Allow ScrollView to intercept touch events.
                            scrollViewParent.requestDisallowInterceptTouchEvent(false);
                            return true;
    
                        case MotionEvent.ACTION_MOVE:
                            scrollViewParent.requestDisallowInterceptTouchEvent(true);
                            return false;
    
                        default:
                            return true;
                    }
                }
            });
    

提交回复
热议问题