如何更改谷歌地图api v2的自定义信息窗口形状

时间:2013-05-23 10:28:15

标签: android google-maps

  

现在我使用此代码显示默认的矩形形状。

 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);
     //
   // Setting custom OnTouchListener which deals with the pressed state
   // so it shows up 
 this.infoButtonListener = new OnInfoWindowElemTouchListener(HomeScreen.this,infoButton) 
 {
       @Override
       protected void onClickConfirmed(View v, Marker marker) {
          // v.setVisibility(View.GONE);
           // Here we can perform some action triggered after clicking the button
        Toast.makeText(HomeScreen.this, marker.getTitle() + "'s button clicked!", 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) {
           // Setting up the infoWindow with current's marker info
        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);

           // We must call this to set the current marker and infoWindow references
           // to the MapWrapperLayout 
           mapWrapperLayout.setMarkerWithInfoWindow(marker, infoWindow);
           return infoWindow;
       }
   });
  

我想将形状更改为心形意味着自定义形状,如图表对话框形状..如何做到这一点..如果有任何身体知道,请帮助我。   now i am getting like this

1 个答案:

答案 0 :(得分:16)

<强> custom_infowindow.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="110dp"
  android:layout_height="110dp"
  android:orientation="vertical"
  android:background="@drawable/heart"
  android:gravity="center"
   >

<RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 >

 <Button 
     android:layout_width="40dp"
     android:layout_height="20dp"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="60dp"
     android:layout_marginTop="15dp"
     android:text="Click!"
     android:textColor="#ffffff"
     android:textSize="10dp"
     android:background="#373737"/>  

<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" 
 android:text="HELLO"
 android:textColor="#FF0000"
 android:padding="10dp"
 android:layout_centerInParent="true"
 android:background="#00000000" 
 />

 </RelativeLayout>

</LinearLayout>

这是你的心形布局..复制并粘贴到应用程序的drable文件夹中... lolz Check This Download it

将上述视图扩展到自定义信息窗口..!

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;

    }
});

这只是我创建的图像..你可以比我更好地添加图像......如果这样可以让我知道...... :)

相关问题