在多个TextView上设置OnClick Listener,在google location android中设置为标记

时间:2015-05-28 15:05:29

标签: android google-maps google-maps-markers onclicklistener

enter image description here

在上面的图片中,我想将onClickListener设置为多个textViews

  1. “将此设置为投放地点”和
  2. “将此设为送货地点”一角的明星
  3. 我用以下xml替换了常规的google标记

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="wrap_content" >
    
    <ImageView
        android:layout_width="300dp"
        android:layout_height="60dp"
        android:src="@drawable/gps_location"
        android:id="@+id/g_location_box_image"/>
    
    <TextView
        android:id="@+id/num_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:text="@string/set_as_delivery_location"
        android:textSize="15sp"
        android:textStyle="bold"
        />
    <TextView
        android:id="@+id/save_as_favorite"
        android:layout_width="40dp"
        android:height="40dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_toRightOf="@+id/num_txt"
        android:layout_toEndOf="@+id/num_txt"
        />
    </RelativeLayout>
    

    setOnClickListener无法使用此功能,因为整个RelativeLayout现在是Google地图的一部分,而不是活动的一部分。

    我尝试实施OnMarkerClickListener,但这使得所有RelativeLayout都可以点击。我需要听上面描述的两个事件: 一个在“将此设置为交付地点”,另一个在明星旁边。

    我怎样才能实现这一目标?请帮助。

    以下是用于替换标记的代码:

    View marker = ((LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.google_marker, null);
    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude))
                            .icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(activity, marker)))
            );
    

1 个答案:

答案 0 :(得分:0)

如果你想点击Marker,你应该使用InfoWindow虽然你无法实现多个可点击的对象。 根据{{​​3}}

  

信息窗口不是实时视图,而是视图在地图上呈现为图像。因此,您在视图上设置的任何侦听器都将被忽略,并且您无法区分视图各个部分上的单击事件。建议您不要在自定义信息窗口中放置交互式组件(如按钮,复选框或文本输入)。