I am using Xamarin to render map with pins in Android. I am able Load the map and show custom Info window for my app, but I want a button or a link inside my Info window which when clicked do some computation and start a new activity.
This is what I am looking for:
 
 
On click of links (link1 and link2) I would like to redirect user to new screen based on some value. My concern here is how can I get a click function for the links.
Also I want the Info Window to have rounded corners and have a pointer pointing to the pin.
Here is my code for above example:
Activity
public class MainActivity : Activity, IOnMapReadyCallback
{
    private GoogleMap GMap;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        // Set our view from the "main" layout resource  
        SetContentView(Resource.Layout.Main);
        SetUpMap();
    }
    private void SetUpMap()
    {
        if (GMap == null)
        {
            FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);
        }
    }
    public void OnMapReady(GoogleMap googleMap)
    {
        this.GMap = googleMap;
        GMap.UiSettings.ZoomControlsEnabled = true;
        LatLng latlng = new LatLng(Convert.ToDouble(15.354942), Convert.ToDouble(73.929845));
        MarkerOptions markerOpt = new MarkerOptions();
        markerOpt.SetPosition(latlng).SetTitle("test")
                  .SetSnippet("test")
                  .SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueOrange));
        MapAdapter adapter = new MapAdapter(this);
        GMap.SetInfoWindowAdapter(adapter);
        GMap.AddMarker(markerOpt).ShowInfoWindow();
        GMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(
          new LatLng(15.354942, 73.929845), 20));
    }
}
Adapter
public class MapAdapter : Java.Lang.Object, GoogleMap.IInfoWindowAdapter
{
    private IOnTouchListener infoButtonListener;
    LayoutInflater inflater;
    private Activity context;
    public MapAdapter(Activity context)
    {
        this.context = context;
    }
    public View GetInfoContents(Marker marker)
    {
        return null;
    }
    public View GetInfoWindow(Marker marker)
    {
        View view = context.LayoutInflater.Inflate(Resource.Layout.CustomWindow, null);
        TextView Link1 = (TextView)view.FindViewById(Resource.Id.Link1);
        TextView Link2 = (TextView)view.FindViewById(Resource.Id.Link2);
        String udata = "Link1";
        SpannableString content = new SpannableString(udata);
        content.SetSpan(new UnderlineSpan(), 0, udata.Length, 0);
        gotoLink.SetText(content,TextView.BufferType.Normal);
        String udataPickup = "Link2";
        SpannableString contentPickup = new SpannableString(udataPickup);
        contentPickup.SetSpan(new UnderlineSpan(), 0, udataPickup.Length, 0);
        pickupLink.SetText(contentPickup, TextView.BufferType.Normal);
        return view;
    }
}
 
    