所以我创建了一个非常简单的自定义InfoWindow,如下所示:
class MyInfoWindowAdapter implements InfoWindowAdapter { private final VIEw myContentsVIEw; MyInfoWindowAdapter() { myContentsVIEw = getLayoutInflater().inflate(R.layout.popup,null); } @OverrIDe public VIEw getInfoContents(Marker marker) { return null; } @OverrIDe public VIEw getInfoWindow(Marker marker) { return getLayoutInflater().inflate(R.layout.popup2,null); }}
popup2的xml只是添加了一个简单的drawable并为其添加了一些文本,并使其可单击.可点击与否可能没有区别.
<TextVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:text="Test Popup" androID:background="@drawable/info_window" androID:clickable="true" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" ></TextVIEw>
最后是drawable:
<selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:state_pressed="false"> <shape androID:shape="rectangle"> <stroke androID:wIDth="1dp" androID:color="@color/divIDer" /> <solID androID:color="@color/background_button" /> <padding androID:left="40dip" androID:top="10dip" androID:right="10dip" androID:bottom="40dp"/> </shape> </item> <item androID:state_pressed="true"> <shape androID:shape="rectangle"> <stroke androID:wIDth="1dp" androID:color="@color/divIDer" /> <solID androID:color="@color/background_button_active" /> <padding androID:left="40dip" androID:top="10dip" androID:right="10dip" androID:bottom="40dp"/> </shape> </item></selector>
这里的选择器是我希望改变state_pressed颜色的东西,但事实并非如此.然而,如果我切换androID.state_pressed语句(第一个为true,第二个为false),则选择器本身会被 *** 作,颜色确实会发生变化.但只有未按下状态改变,按下状态仍然是黄色.
解决方法 用简单的话说“你不能”.因为根据文档“信息窗口不是实时视图,而是视图在地图上呈现为图像.因此,您在视图上设置的任何侦听器都会被忽略,您无法区分各个部分的点击事件.视图.建议您不要在自定义信息窗口中放置交互式组件 – 例如按钮,复选框或文本输入.“
所以,简而言之,除了“OnInfoWindowClickListener”之外,你无法处理infowindow上的任何事件
有关更多,请选中“https://developers.google.com/maps/documentation/android/marker”.
总结以上是内存溢出为你收集整理的android – 如何在Google Maps中自定义infowindow的state_pressed颜色?全部内容,希望文章能够帮你解决android – 如何在Google Maps中自定义infowindow的state_pressed颜色?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)