2013-03-20 115 views
4

我想在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聲明(第一個真,第二個假)顏色確實改變。但只有未按下的狀態纔會變化,按下的狀態仍然會變成黃色。

回答

1

簡而言之「你不行」。

因爲根據文檔「信息窗口不是實時視圖,而是視圖呈現爲地圖上的圖像。因此,您在視圖上設置的任何聽衆都被忽略,並且無法區分點擊事件在視圖的各個部分,建議您不要在您的自定義信息窗口中放置交互式組件(如按鈕,複選框或文本輸入)。「

因此,簡而言之你無法處理的信息窗口以外的任何事件比「OnInfoWindowClickListener」

詳細檢查「https://developers.google.com/maps/documentation/android/marker」。

+0

我知道它是一個單純的形象 - 但「按下」版本(黃版)必須在自身的形象,也正因爲如此能(將?)在創建時也被渲染。至少,這正是我所希望的......顯然,不是。 – Wouter 2013-03-21 00:22:49

相關問題