मैं एक अनुकूलित जानकारी विंडो का उपयोग करता हूं ताकि मैं एक ग्रे पृष्ठभूमि और सफेद टेक्स्ट रंग प्राप्त कर सकूं। फिर भी, मुझे इसके चारों ओर एक सफेद फ्रेम मिलता है। मैं चाहता हूं कि सभी इंफो विंडो ग्रे हो, जिसमें इसका त्रिकोणीय किनारा शामिल है जो स्पॉट की ओर इशारा करता है।

मैं इस कोड का उपयोग अपने Activity में करता हूं:

map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
    @Override  // Use default InfoWindow frame
    public View getInfoWindow(Marker marker) { return null; }
    @Override // Defines the contents of the InfoWindow
    public View getInfoContents(Marker marker) {
        View v = getLayoutInflater().inflate(R.layout.map_info_window, null);
        TextView tv_location = (TextView) v.findViewById(R.id.tv_location);
        tv_location.setText(marker.getTitle());
        return v;
    }});

और यह मेरा लेआउट है:

<!--?xml version="1.0" encoding="utf-8"?-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map_info_window"
    android:layout_width="match_parent"
    android:background="@color/light_grey"
    android:orientation="horizontal"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/tv_location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white" />

</LinearLayout>
0
Marinos K 13 अप्रैल 2017, 20:35
 – 
Daniel Nugent
13 अप्रैल 2017, 22:01

1 उत्तर

सबसे बढ़िया उत्तर

आपको getInfoWindow () मेथड को ओवरराइड करना होगा और उस फंक्शन में कस्टम लेआउट को बढ़ाना होगा।

से दस्तावेज़ीकरण

public abstract View getInfoWindow (Marker marker)

एक मार्कर के लिए एक कस्टम जानकारी विंडो प्रदान करता है। यदि यह विधि a . लौटाती है देखें, इसका उपयोग संपूर्ण जानकारी विंडो के लिए किया जाता है। यदि आप इस दृष्टिकोण को बदलते हैं इस विधि को बुलाए जाने के बाद, वे परिवर्तन जरूरी नहीं होंगे प्रदान की गई जानकारी विंडो में परिलक्षित होता है। यदि यह विधि शून्य लौटाती है, द्वारा प्रदान की गई सामग्री के साथ, डिफ़ॉल्ट जानकारी विंडो फ़्रेम का उपयोग किया जाएगा getInfoContents(Marker).

 @Override  // Use default InfoWindow frame
    public View getInfoWindow (Marker marker){
        View v = getLayoutInflater().inflate(R.layout.map_info_window, null);
        TextView tv_location = (TextView) v.findViewById(R.id.tv_location);
        tv_location.setText(marker.getTitle());
        return v;
    }
    @Override // Defines the contents of the InfoWindow
    public View getInfoContents (Marker marker){
        // TODO Auto-generated method stub
        return null;
    }

तो मुझे लगता है कि आपको अपने कार्य कार्यान्वयन को उलट देना चाहिए।

1
rafsanahmad007 13 अप्रैल 2017, 20:47