首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemizedOverlay的setFocus(overlayItem)不工作

ItemizedOverlay的setFocus(overlayItem)不工作
EN

Stack Overflow用户
提问于 2010-01-19 23:34:44
回答 1查看 1.6K关注 0票数 6

我在安卓应用程序上工作,我能够使用ItemizedOverlay在地图上显示多个图标,我还实现了ItemizedOverlay的onTap(int index)方法来在所需的窗口中显示图标特定的信息。

现在,当用户单击其他组件时,我想更改选定覆盖的图标。我正在调用ItemizedOverlay的setFocus(OverlayItem)方法来显示特定覆盖的不同图标。当用户点击任何特定的覆盖图时,它工作得很好,但当我调用setFocus(OverlayItem)方法时,它不会改变图标。

有什么建议吗?以编程方式更改mapView中选定覆盖图的图标的最佳方式是什么?

我重写了自定义overlayItem类的getMarker方法,为不同的OverlayItem状态显示不同的标记。我想使用setFocus( OverlayItem )方法来更改OverlayItem的状态,并在被选中时更改标记。

代码语言:javascript
复制
@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;   
 }
}

这里的Util.getCategoryMapIcon(0)是一个返回适当图标的实用工具方法,这个方法需要一些参数,为了让这个例子看起来简单,我去掉了这些参数。

下面是更改状态的代码

代码语言:javascript
复制
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);
 }
});

任何帮助都将不胜感激。谢谢,阿米尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-20 04:11:08

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2094619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档