我想在Google Maps中自定義InfoWindow的state_pressed行爲。通常當這個InfoWindow被按下時,它變成黃色。自定義InfoWindows也是如此。但我想將其改爲另一種顏色,如紅色,橙色或藍色。如何在Google地圖中自定義infowindow的state_pressed顏色?
所以我創建了一個非常簡單的自定義信息窗口是這樣的:
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只是增加了一個簡單的繪製,並添加文本的一點點吧,變成可點擊。可點擊或不點擊不會產生影響。
<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>
最後提拉:
<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
聲明(第一個真,第二個假)顏色確實改變。但只有未按下的狀態纔會變化,按下的狀態仍然會變成黃色。
我知道它是一個單純的形象 - 但「按下」版本(黃版)必須在自身的形象,也正因爲如此能(將?)在創建時也被渲染。至少,這正是我所希望的......顯然,不是。 – Wouter 2013-03-21 00:22:49