ItemizedOverlay的setFocus(overlayItem)不起作用

Aam*_*een 6 android google-maps overlay map

我正在研究android应用程序,我能够使用ItemizedOverlay在地图上显示多个图标,并且我还实现了ItemizedOverlay的onTap(int index)方法,以在所需窗口中显示图标特定信息.

现在,我想在用户点击其他组合时更改所选叠加层的图标.我调用ItemizedOverlay的setFocus(OverlayItem)方法来显示特定叠加的不同图标.当用户点击任何特定的叠加层但在我调用setFocus(OverlayItem)方法时不会更改图标时,它可以正常工作.

有什么指针吗?在mapView中以编程方式更改所选叠加图标的最佳方法是什么?

我已经覆盖了我的自定义OverlayItem类的getMarker方法,以显示不同的overlayItem状态的不同标记.我想使用setFocus(OverlayItem)方法来更改OverlayItem的状态,并在选择时更改标记.

@Override
public Drawable getMarker(int stateBitset){
 if(stateBitset==0){
  icon = Util.getCategoryMapIcon(0);   
  icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
  return icon;
 }else {
  icon = Util.getCategoryMapIcon(OverlayItem.ITEM_STATE_SELECTED_MASK);
  icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
  return icon;   
 }
}
Run Code Online (Sandbox Code Playgroud)

这里Util.getCategoryMapIcon(0)是返回相应图标的Utility方法,此方法需要一些参数,我已删除这些参数使这个例子看起来很简单.

以下是改变状态的代码

Button leftNavigation = (Button) findViewById(R.id.left_navigation_button);
leftNavigation.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
  OverlayItem item = searchResultsOverlay.get(index+1);
  setFocus(item);
 }
});
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽.谢谢,Aamir

Rom*_*rik 0

在您的getMarker代码中,尝试返回一个StateListDrawable(对应于<selector>可绘制 XML 中),其中包含默认可绘制对象(无状态)和具有状态的可绘制对象android.R.attr.state_focused

请参阅此处的相关问题:Android ListView Selector Color