2

OsmdroidMapViewがあります。設定したのに

mapView.setClickable(false);
mapView.setFocusable(false);

マップは引き続き移動できます。マップビューとのすべての相互作用を無効にする簡単な方法はありますか?

4

4 に答える 4

5

簡単な解決策は、@ Schrieveslaachと同じように、ただしmapViewを使用することです。

mapView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});
于 2016-03-14T17:30:58.360 に答える
1

私は解決策を見つけました。を設定して、タッチイベントを直接処理する必要がありますOnTouchListener。例えば、

public class MapViewLayout extends RelativeLayout {

    private MapView mapView;

    /**
     * @see #setDetachedMode(boolean)
     */
    private boolean detachedMode;

    // implement initialization of your layout...

    private void setUpMapView() {
       mapView.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (detachedMode) {
                    if (event.getAction() == MotionEvent.ACTION_UP) {
                        // if you want to fire another event
                    }

                    // Is detached mode is active all other touch handler
                    // should not be invoked, so just return true
                    return true;
                }

                return false;
            }
        });
    }

    /**
     * Sets the detached mode. In detached mode no interactions will be passed to the map, the map
     * will be static (no movement, no zooming, etc).
     *
     * @param detachedMode
     */
    public void setDetachedMode(boolean detachedMode) {
        this.detachedMode = detachedMode;
    }
}
于 2016-02-04T08:28:33.827 に答える
0

あなたは試すことができます:

mapView.setEnabled(false); 

マップビューとのすべての相互作用を無効にする必要があります

于 2013-01-19T02:44:12.573 に答える
0

私のソリューションは@schrieveslaachと@sagixに似ていますが、基本MapViewクラスを拡張して新しい機能を追加するだけです。

class DisabledMapView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null
) : MapView(context, attrs) {

    private var isUserInteractionEnabled = true

    override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
        if (isUserInteractionEnabled.not()) {
            return false
        }
        return super.dispatchTouchEvent(event)
    }

    fun setUserInteractionEnabled(isUserInteractionEnabled: Boolean) {
        this.isUserInteractionEnabled = isUserInteractionEnabled
    }
}
于 2020-03-23T06:27:25.700 に答える