Question

D'abord le scénario:

J'ai une liste où chaque élément a une photo d'un contact et du texte. Je voudrais cliquer sur l'image et faire apparaître le QuickContactBadge. L'insigne est défini par l'extrait XML suivant

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

Ce que j'ai essayé et échoué:

  1. Définissez un badge réutilisable et réutilisez-le pour tous les cas. La liste et le badge sont placés dans RelativeLayout
  2. Avoir un badge défini par chaque élément de liste. L'article utilise RelativeLayout

Qu'est ce que je vois:

Fondamentalement rien. Le code obtient une instance de badge valide, puis j'applique la logique suivante

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

Au moment où je clique, je peux passer à travers le code dans onClick Handler pourtant le badge ne vient jamais

Questions:

  1. Fait QuickContactBadge Vous avez une logique de placement? Lorsque je clique sur l'image, dois-je calculer la position du badge et me réajuster ou est-elle intégrée?
  2. Est-il possible de réaliser ce que je décris ci-dessus (badge pour les images affichées dans la liste) et ce que je fais mal (ou manque)
Était-ce utile?

La solution

Avorter! Avorter!

Fondamentalement, j'ai mal compris ce qu'est le badge et comment l'utiliser. Ce que j'essayais de faire, c'est de détecter un clic sur l'image et d'appeler l'insigne. C'est fondamentalement mauvais car tout ce que je devais faire était simplement d'utiliser QuickContactBadge À la place de ImageView dans mon code. Après avoir remplacé les images par des badges dans l'élément XML, la magie était automatiquement là.

Dit que - il est possible de faire éclater le badge en utilisant le code, se référer à Cet article sur la façon de le faire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top