Android Yandex Mapview内部滚动视图未垂直滚动

Android Yandex Mapview内部滚动视图未垂直滚动,android,dictionary,scrollview,android-mapview,Android,Dictionary,Scrollview,Android Mapview,地图视图只会横向滚动,就好像您试图垂直滚动一样,ScrollView正在执行操作。我尝试了RequestDisallowWinterCeptTouchEvent(true);但这没用 PS.Yandex MapView扩展了RelativeLayout尝试在TouchEvent上使用MapView,如下所示 public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { ca

地图视图只会横向滚动,就好像您试图垂直滚动一样,ScrollView正在执行操作。我尝试了RequestDisallowWinterCeptTouchEvent(true);但这没用


PS.Yandex MapView扩展了RelativeLayout

尝试在TouchEvent上使用MapView,如下所示

public boolean onTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
    // Disallow ScrollView to intercept touch events.
    this.getParent().requestDisallowInterceptTouchEvent(true);
    break;

case MotionEvent.ACTION_UP:
    // Allow ScrollView to intercept touch events.
    this.getParent().requestDisallowInterceptTouchEvent(false);
    break;
}

// Handle MapView's touch events.
super.onTouchEvent(ev);
return true;
}

RequestDisallowWinterCeptTouchEvent如果设置为true,则可以滚动嵌套视图如果设置为false,则启用父ScrollView滚动

对于ListView,我们不需要这个事件监听器,只需
ListView.setNestedScrollingEnabled(true)


您必须创建自定义地图视图。按照下面提供的代码片段进行操作

public class AppMapView extends MapView {

    public AppMapView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_UP:
               System.out.println("unlocked");
               this.getParent().requestDisallowInterceptTouchEvent(false);
               break;

            case MotionEvent.ACTION_DOWN:
               System.out.println("locked");
               this.getParent().requestDisallowInterceptTouchEvent(true);
               break;
       }
       return super.dispatchTouchEvent(ev);
   }
}

onTouchEvent没有被调用更改我的答案检查它。没有问题是,mapview绝对没有检测到触摸回答我自己的问题。。。这个答案奏效了!!
public class AppMapView extends MapView {

    public AppMapView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_UP:
               System.out.println("unlocked");
               this.getParent().requestDisallowInterceptTouchEvent(false);
               break;

            case MotionEvent.ACTION_DOWN:
               System.out.println("locked");
               this.getParent().requestDisallowInterceptTouchEvent(true);
               break;
       }
       return super.dispatchTouchEvent(ev);
   }
}