如何在Google地图中自定义infowindow的state_pressed颜色?

时间:2013-03-20 18:14:33

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

我正在尝试在Google地图中自定义InfoWindow的state_pressed行为。通常,当按下此InfoWindow时,它会变为黄色。自定义InfoWindows也是如此。但我想将其改为另一种颜色,如红色或橙色或蓝色。

所以我创建了一个非常简单的自定义InfoWindow:

class MyInfoWindowAdapter implements InfoWindowAdapter {
    private final View myContentsView;

    MyInfoWindowAdapter() {
        myContentsView = getLayoutInflater().inflate(R.layout.popup, null);
    }

    @Override
    public View getInfoContents(Marker marker) {
        return null;
    }

    @Override
    public View getInfoWindow(Marker marker) {
        return getLayoutInflater().inflate(R.layout.popup2, null);
    }
}

popup2的xml只是添加了一个简单的drawable,并为其添加了一些文本,并使其可单击。可点击与否可能没有区别。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="Test Popup"
    android:background="@drawable/info_window"
    android:clickable="true"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</TextView>

最后是drawable:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/divider" />
            <solid android:color="@color/background_button" />
            <padding android:left="40dip"
                 android:top="10dip"
                 android:right="10dip"
                 android:bottom="40dp"/> 

        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/divider" />
            <solid android:color="@color/background_button_active" />
            <padding android:left="40dip"
                 android:top="10dip"
                 android:right="10dip"
                 android:bottom="40dp"/> 

        </shape>
    </item>
</selector>

这里的选择器是我希望改变state_pressed颜色的东西,但事实并非如此。然而,如果我切换android.state_pressed语句(第一个为真,第二个为假),颜色确实会发生变化,那么选择器本身就会起作用。但只有未按下状态改变,按下的状态仍然会变成黄色。

2 个答案:

答案 0 :(得分:2)

您可能需要在此处提升此增强功能:http://code.google.com/p/gmaps-api-issues/issues/detail?id=4783

答案 1 :(得分:1)

用简单的话说“你不能”。

因为根据文档“信息窗口不是实时视图,而是视图在地图上呈现为图像。因此,您在视图上设置的任何侦听器都会被忽略,您无法区分视图的各个部分。建议您不要在自定义信息窗口中放置交互式组件 - 例如按钮,复选框或文本输入。“

因此,简而言之,除了“OnInfoWindowClickListener”

之外,你无法处理infowindow上的任何事件

有关支票“https://developers.google.com/maps/documentation/android/marker”的更多信息。