2011-05-30 12 views
7

Uso mi propia imagen de icono como indicador para ExpandableListView, pero el ícono parece estar estirado, traté de poner el archivo de imagen en/drawable y/drawable-hdpi sin suerte. Si no uso mi propio ícono, el Android incorporado se ve bien, entonces me pregunto si hay alguna restricción en la dimensión de la imagen, o hay algo que he hecho mal?Indicador/ícono de Android ExpandableListView siempre extendido

Gracias!

Respuesta

17

group_indicator.9.png

Cualquiera que sea la imagen que está utilizando como indicador de su grupo, lo convierten en una imagen de 9 parche (xxx.9.png) y establecer sus zonas extensibles a alrededor de los píxeles del borde (que probablemente sea transparente). Evitará estirar la imagen desde el medio.

+0

no funciona ... no hay ningún cambio si configuramos la imagen de 9 parches ... una solución que aplico es la que hace que la imagen de la flecha tenga la misma altura que el fondo de donde se muestra .... – Jayesh

+0

¿Cuál es el tamaño del icono? –

+0

@PavanKumar depende del tamaño que necesite. :) –

6

La lista ampliable es un problema. Siempre estira los iconos. Una solución fácil es usar nueve imágenes de parches que contengan solo un píxel estirable en la parte superior e inferior. Por lo tanto, solo se estirarán esos dos píxeles y el resto de la imagen permanecerá sin modificaciones.

esperanza esto sentido

+0

"solamente un píxel estirable en la parte superior e inferior", significa que no hay píxeles estirable a la izquierda/derecha? – hzxu

+0

también, mis íconos son un círculo sólido con un triángulo adentro, parece imposible hacer de esto un parche de nueve. – hzxu

+0

cuando no uso mi propio ícono, el ícono incorporado de Android no se estira, así que supongo que hay una manera de resolver el problema. – hzxu

7

Si desea hacer todo esto a través de la codificación, sin utilizar una imagen diferente, así es como lo hice funcionar.

(1) Ajuste del indicador de grupo en null

(2) Incluyendo a mi indicador de grupo personalizado en el grupo Diseño.

(3) Tener un groupClickListener que cambie el estado de su indicador.

fragmentos de código:

(1) mListView.setGroupIndicator(null);

(2) Incluye mi indicador en el esquema de grupo.

<ImageView 
    android:id="@+id/help_group_indicator" 
    android:layout_width="@dimen/help_group_indicator_dimension" 
    android:layout_height="@dimen/help_group_indicator_dimension" 
    android:layout_marginTop="@dimen/help_group_indicator_dimension" 
    android:src="@drawable/down_icon" /> 

(3)

mListView.setOnGroupClickListener(new OnGroupClickListener() { 
    @Override 
    public boolean onGroupClick(ExpandableListView parent, View clickedView, int groupPosition, long rowId) { 
     ImageView groupIndicator = (ImageView) clickedView.findViewById(R.id.help_group_indicator); 
     if (parent.isGroupExpanded(groupPosition)) { 
      parent.collapseGroup(groupPosition); 
      groupIndicator.setImageResource(R.drawable.down_icon); 
     } else { 
      parent.expandGroup(groupPosition); 
      groupIndicator.setImageResource(R.drawable.up_icon); 
     } 
     return true; 
    } 
}); 
Cuestiones relacionadas