0

我有一个 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;
            }
        });

两次尝试都不会锁定移动,但会禁用选择叠加层的能力。

有任何想法吗?

谢谢

4

2 回答 2

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>

MapViewmap_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
                    }
                });
于 2012-12-04T21:27:11.630 回答
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);
     }

});
于 2012-12-04T22:03:42.010 回答