Android: QuickContactBadge en ListView

Primero el escenario:

Tengo una lista donde cada elemento tiene una foto de un contacto y algo de texto. Me gustaría hacer clic en la imagen y abrir el QuickContactBadge. La insignia se define mediante el siguiente fragmento XML

<QuickContactBadge android:layout_height="wrap_content"
   android:layout_width="wrap_content" android:id="@+id/badge" 
   android:layout_alignParentBottom="true"></QuickContactBadge>

Lo que intenté y fallé:

  1. Defina una insignia reutilizable y reutilícela para todos los casos. Tanto la lista como la insignia se colocan en RelativeLayout
  2. Tener una insignia definida por cada elemento de la lista. El artículo usa RelativeLayout

Que es lo que veo:

Básicamente nada. El código obtiene una instancia de insignia válida y luego aplico la siguiente lógica

    contactPhoto.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(final View v) {
            Log.d(TAG, "Image click");
            if (badge != null) {
                badge.assignContactFromEmail("johndoe@gmail.com", true);
                badge.setMode(ContactsContract.QuickContact.MODE_SMALL);
                badge.bringToFront();
            }
        }
    });

Al hacer clic, puedo recorrer el código en onClick controlador, pero la insignia nunca aparece

Las preguntas:

  1. ¿Afecta la regulación de la QuickContactBadge ¿Tiene alguna lógica de ubicación? Cuando hago clic en la imagen, ¿necesito calcular la posición de la insignia y reajustarla o está incorporada?
  2. ¿Es posible lograr lo que describo anteriormente (insignia para las imágenes que se muestran en la lista) y lo que estoy haciendo mal (o falta)?

preguntado el 16 de mayo de 11 a las 17:05

Entonces el # 1 es sí. QuickContactBadge no tiene lógica de ubicación, pero activa el Intent que llama a QuickContact, que calcula el Rect en función de dónde se hizo clic en la pantalla:

1 Respuestas

¡Abortar! ¡Abortar!

Básicamente, entendí totalmente mal qué es la insignia y cómo usarla. Lo que estaba tratando de hacer es detectar el clic en la imagen y llamar a la insignia. Esto es fundamentalmente incorrecto, ya que todo lo que tenía que hacer era simplemente usar QuickContactBadge En lugar de ImageView en mi código. Después de que reemplacé las imágenes con insignias en el elemento, la magia XML apareció automáticamente allí.

Dicho eso, es posible hacer estallar la insignia usando el código, consulte este artículo sobre como hacerlo

contestado el 18 de mayo de 11 a las 02:05

@ Droidln.net, ¿puedes mirar este hilo? stackoverflow.com/questions/9340039/… , usando este código obtengo un tamaño diferente de QuickContactBadge - Cazar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.