2 Stimmen

Wie man die benutzerdefinierte InfoWindow-Form der Google Maps API v2 ändert

jetzt habe ich die Standard-Rechteckform mit diesem Code angezeigt.

 this.infoWindow = (ViewGroup)getLayoutInflater().inflate(R.layout.newcustomdialog, null);
 this.infoImage=(ImageView)infoWindow.findViewById(R.id.graphicimage);
 this.infoTitle = (TextView)infoWindow.findViewById(R.id.balloon_item_title);
 this.infoSnippet = (TextView)infoWindow.findViewById(R.id.balloon_item_snippet);
 this.close=(Button)infoWindow.findViewById(R.id.close_img_button);
 this.infoButton = (Button)infoWindow.findViewById(R.id.more);
     //
   // Einstellung eines benutzerdefinierten OnTouchListeners, der mit dem gedrückten Zustand umgeht
   // so zeigt es sich 
 this.infoButtonListener = new OnInfoWindowElemTouchListener(HomeScreen.this,infoButton) 
 {
       @Override
       protected void onClickConfirmed(View v, Marker marker) {
          // v.setVisibility(View.GONE);
           // Hier können wir eine Aktion ausführen, die nach dem Klicken des Buttons ausgelöst wird
        Toast.makeText(HomeScreen.this, marker.getTitle() + "'s Button wurde geklickt!", Toast.LENGTH_SHORT).show();
       }

 }; 
   //oraii 
 this.exitButtonListener=new OnInfoWindowExitListener(HomeScreen.this,infoWindow) {

    @Override
    protected void onClickConfirmed(View v, Marker marker) {
        // TODO Auto-generated method stub

    }
 };

 this.infoButton.setOnTouchListener(infoButtonListener);
 this.close.setOnTouchListener(exitButtonListener);      

 map.setInfoWindowAdapter(new InfoWindowAdapter() {
       public View getInfoWindow(Marker marker) {
           return null;
       }

       public View getInfoContents(Marker marker) {
           // Einrichten des infoWindow mit den Informationen des aktuellen Markers
        StringTokenizer st2 = new StringTokenizer(marker.getTitle(), ",");

           String imageurl="";
           String title="";
          String eventid="";
           while (st2.hasMoreElements()) {
                eventid=st2.nextElement().toString();
                imageurl=st2.nextElement().toString();
                title=st2.nextElement().toString();
            }
           EventId=eventid;
           infoTitle.setText(title);
           infoSnippet.setText(marker.getSnippet());
           imageLoader.DisplayImage(imageurl,HomeScreen.this, infoImage);
           infoButtonListener.setMarker(marker);
           exitButtonListener.setMarker(marker);

           // Dies muss aufgerufen werden, um die aktuellen Marker- und infoWindow-Verweise
           // auf das MapWrapperLayout zu setzen 
           mapWrapperLayout.setMarkerWithInfoWindow(marker, infoWindow);
           return infoWindow;
       }
   });

Ich möchte die Form in Herzform ändern, also eine benutzerdefinierte Form wie eine Diagrammdialogform. Wie mache ich das? Bitte helfen Sie mir, wenn es jemand weiß. Jetzt bekomme ich das so

16voto

TheFlash Punkte 5959

custom_infowindow.xml

das ist dein Herzform-Layout... kopiere und füge es im Drable-Ordner deiner Anwendung ein... lolz Check This Herunterladen

nur das obige Layout in das benutzerdefinierte Infowindow einblenden...!

mMap.setInfoWindowAdapter(new InfoWindowAdapter() {

    public View getInfoWindow(Marker arg0) {
        View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null);
        return v;
    }

    public View getInfoContents(Marker arg0) {

        //View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null);

        return null;

    }
});

das ist nur ein Bild, das ich erstellt habe... du kannst ein besseres Bild hinzufügen als ich... wenn das funktioniert, lass es mich wissen... :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X