在Android上长按GoogleMap的InfoWindow

时间:2012-12-05 23:12:35

标签: android google-maps google-maps-android-api-2

我在Android上使用自定义InfoWindowsAdapter for GoogleMap。我的问题是,我无法在该自定义信息窗口上附加onLongClickListener。 GoogleMap类只有OnClickListener,但API中缺少OnLongClickListener。

我尝试在自定义视图上附加OnLongClickListener,但不会调用此侦听器。

private class EventInfoWindowAdapter implements InfoWindowAdapter {    
    public View getInfoWindow(Marker marker) {

            //mWindow is clicable (I do set it in layout XML)
        mWindow = getLayoutInflater().inflate(R.layout.event_info_window, null);

        mWindow.setOnLongClickListener(new LinearLayout.OnLongClickListener() {

            @Override
            public boolean onLongClick(View view) { //THIS ONE IS NOT CALLED

                Log.d("LONG", "CLICKED");

                contextMode = startActionMode(actionModeCallback);

                return true;
            }
        });

        return mWindow;
    }
}

//in onCreate(...) method

mMap = ((MapView) findViewById(R.id.map)).getMap();
mMap.setInfoWindowAdapter(new EventInfoWindowAdapter());

有关如何使其有效的任何建议吗?

1 个答案:

答案 0 :(得分:3)

监听器将无法工作,因为您作为InfoWindow叠加层显示的内容不是视图 - 它是视图的快照,几乎是大多数方法和目的的图片。我有类似的麻烦,所以这些答案可能对你有帮助:

Adding a button to a custom InfoWindowAdapter view that can register clicks