我有一个MapView,它有一个叠加层,其中包含许多可以选择和拖动的绘图。
问题是当拖动一个对象时,MapView也会移动。
有没有办法可以锁定MapView?
我尝试过使用map.setClickable(false)
我也用过:
map.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE) {
return true;
}
return false;
}
});
两次尝试都不会锁定移动,但会禁用选择叠加的功能。
有什么想法吗?
由于
答案 0 :(得分:0)
在我的旧项目中,我设置MapView.clickable(false)
并在MapView
上添加布局。不确定这是最好的解决方案。
<强>更新强>
<RelativeLayout
a:id="@+id/map_block"
a:layout_width="fill_parent"
a:layout_height="wrap_content"
>
<RelativeLayout
a:id="@+id/map_holder"
a:layout_width="fill_parent"
a:layout_height="150dp"
/>
<!-- Layout for catching clicks -->
<TextView
a:id="@+id/map_click_receiver"
a:layout_width="fill_parent"
a:layout_height="150dp"
/>
</RelativeLayout>
以编程方式MapView
添加map_holder
:
mMapView = new MapView(mContext, getString(R.string.gmaps_key));
mapHolder.addView(mMapView, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
哦,是的(但我认为mMapClickReceiver.setClickable(false)
也可以帮助):
mMapClickReceiver.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// something to do
}
});
答案 1 :(得分:0)
这对我有用:
map.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE) {
return true;
}
return v.onTouchEvent(event);
}
});