gpt4 book ai didi

android - 带有 scrollView 的 OSMDroid MapView 气球

转载 作者:行者123 更新时间:2023-11-29 21:50:55 27 4
gpt4 key购买 nike

我正在使用 osmdroid 和 osmdroid 奖励包来展示气球。在气球内部有一个 ScrollView ,其中包含一个线性布局(垂直)作为 subview 。

当我尝试向下滚动时,我的 map View 也会滚动。我怎样才能强制滚动 Action 只对我的气球?

最佳答案

好吧,我找到了一个解决方案,也许它不是最好的解决方案,但它对我有用,就像我期望的那样

创建一个从 MapView 扩展的类并覆盖下一个方法:

  @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
float x = ev.getRawX();
float y = ev.getRawY();
View view = findViewById(R.id.my_overlay_view);
if(view!=null){
boolean isInside = isPointInsideView(x, y, view);
if(isInside){
System.out.println("Touch in");
canMove = false;
}else{
int action = ev.getAction();
System.out.println(action);
switch (action) {
case MotionEvent.ACTION_MOVE:
moving=true;
break;
case MotionEvent.ACTION_UP:
if(!moving){
CustomDefaultInfoWindow window = (CustomDefaultInfoWindow)view.getTag();
window.close();
moving=false;
}
default:
break;
}
canMove = true;
}
}

return super.onInterceptTouchEvent(ev);
}


@Override
public void scrollTo(int arg0, int arg1) {
if(canMove){
super.scrollTo(arg0, arg1);
}

};
private boolean isPointInsideView(float x, float y, View view){
int location[] = new int[2];
view.getLocationOnScreen(location);
int viewX = location[0];
int viewY = location[1];

//point is inside view bounds
if(( x > viewX && x < (viewX + view.getWidth())) &&
( y > viewY && y < (viewY + view.getHeight()))){
return true;
} else {
return false;
}
}

关于android - 带有 scrollView 的 OSMDroid MapView 气球,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com