Googleマップのインフォウィンドウのstate_pressedの動作をカスタマイズしようとしています。通常、このインフォウィンドウを押すと黄色に変わります。これは、カスタムInfoWindowsの場合にも当てはまります。しかし、これを赤、オレンジ、青などの別の色に変更したいと思います。
そこで、次のような非常に単純なカスタム情報ウィンドウを作成しました。
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
ただし、ステートメント(最初のtrue、2番目のfalse)を切り替えると、セレクター自体が動作します。色は変わります。ただし、押されていない状態のみが変化し、押された状態は黄色になります。