Android Yandex Mapview内部滚动视图未垂直滚动
地图视图只会横向滚动,就好像您试图垂直滚动一样,ScrollView正在执行操作。我尝试了RequestDisallowWinterCeptTouchEvent(true);但这没用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
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);
}
}