4

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)を切り替えると、セレクター自体が動作します。色は変わります。ただし、押されていない状態のみが変化し、押された状態は黄色になります。

4

2 に答える 2

2

ここでこの拡張機能に賛成することをお勧めします:http ://code.google.com/p/gmaps-api-issues/issues/detail?id = 4783

于 2013-03-20T20:13:36.690 に答える
1

簡単に言えば「YOUCANT」。

ドキュメントによると、「情報ウィンドウはライブビューではなく、ビューはマップ上に画像としてレンダリングされます。その結果、ビューに設定したリスナーは無視され、のさまざまな部分のクリックイベントを区別できません。ビュー。ボタン、チェックボックス、テキスト入力などのインタラクティブなコンポーネントをカスタム情報ウィンドウ内に配置しないことをお勧めします。」

つまり、uは「OnInfoWindowClickListener」以外のinfowindow上のイベントを処理できません。

詳細については、「https://developers.google.com/maps/documentation/android/marker」を確認してください。

于 2013-03-20T18:21:31.027 に答える