2010-01-19 6 views
6

Estoy trabajando en la aplicación de Android y puedo mostrar varios íconos en el mapa utilizando ItemizedOverlay y también he implementado en el métodoTap (int index) de ItemizedOverlay para mostrar información específica del icono en un ventana requerida.setFocus (overlayItem) de ItemizedOverlay no funciona

Ahora, quiero cambiar el icono de la superposición seleccionada cuando el usuario hace clic en algún otro componente. Estoy llamando al método setFocus (OverlayItem) de ItemizedOverlay para mostrar diferentes iconos de superposición específica. funciona bien cuando el usuario toca en cualquier superposición específica, pero no cambia el icono cuando llamo al método setFocus (OverlayItem).

¿Alguna sugerencia? ¿Cuál es la mejor manera de cambiar programáticamente el icono de la superposición seleccionada en mapView?

He reemplazado el método getMarker de mi clase OverlayItem personalizada para mostrar diferentes marcadores para diferentes estados de overlayItem. y quiero usar el método setFocus (OverlayItem) para cambiar el estado de OverlayItem y también cambiar el marcador cuando se selecciona.

@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; 
} 
} 

aquí Util.getCategoryMapIcon (0) es el método de línea vuelva icono correspondiente, este método tiene algunos parámetros, que he quitado para hacer este ejemplo parecen simples.

y por debajo es el código para cambiar el estado

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); 
} 
}); 

será muy apreciada Cualquier ayuda. Gracias , Aamir

Respuesta

0

En su código getMarker, intentan devolver un StateListDrawable (que corresponde a <selector> en XML estirable) que contiene una dibujable por defecto (no hay estados) y un estirable con el estado android.R.attr.state_focused.

Ver una pregunta relacionada aquí: Android ListView Selector Color

+0

Ha habido suerte con esta respuesta? Siéntase libre de seguir. –

+0

Gracias Roman. Funcionó muy bien. –

Cuestiones relacionadas