我正在使用此示例:https://github.com/galex/android-mapviewballoons
我的问题是可点击区域比标记本身宽。例如,我的Google地图标记是25x25,然后可点击区域将扩展到70x70。对于重叠标记,这是一个很大的问题。
当我点击该箭头的尖端时,即使点按区域远离标记,也会激活onTap。
请帮帮我。感谢。
答案 0 :(得分:1)
这是ItemizedOverlay
的默认行为。对于大多数人的手指,25x25像素通常不是一个适当的可触摸区域。
如果要修改测试叠加项目的方式,则应覆盖hitTest()
方法。
答案 1 :(得分:-1)
用于调试:
尝试使用TouchDelegate
作为视图,您可以为给定View
显示如何使用TouchDelegate
:
public class TouchDelegateSample extends Activity {
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.touch_delegate_view);
mButton = (Button)findViewById(R.id.delegated_button);
View parent = findViewById(R.id.touch_delegate_root);
// post a runnable to the parent view's message queue so its run
after
// the view is drawn
parent.post(new Runnable() {
@Override
public void run() {
Rect delegateArea = new Rect();
Button delegate = TouchDelegateSample.this.mButton;
delegate.getHitRect(delegateArea);
delegateArea.top -= 200;
TouchDelegate expandedArea = new TouchDelegate(delegateArea,
delegate);
// give the delegate to an ancestor of the view we're
delegating the
// area to
if (View.class.isInstance(delegate.getParent())) {
((View)delegate.getParent()).setTouchDelegate(expandedArea);
}
}
});
}
}
查看给定生命值是否在项目标记的范围内。 覆盖以修改项目受测试的方式。命中点是相对于标记的边界。默认实现只是检查命中点是否在标记的可触摸范围内。