Image cliquable-android

comment rendre une image cliquable? J'ai essayé certaines méthodes, mais sans succès. Voici le dernier code que j'ai essayé (il est cliquable mais obtient l'erreur):

    ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
    btnNew.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {

            // do stuff
          }

        });      

et voici la partie de xml:

    <ImageView 
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickImage"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" />

lors de l'exécution de ce code, et en cliquant sur l'image je reçois cette erreur:

01-24 19:14:09.534: ERROR / AndroidRuntime (1461): java.lang.IllegalStateException: impossible de trouver une méthode clickImage (View) dans l'activité

VOICI LA SOLUTION:

the XML:

    <ImageButton
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickNew"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@null" />

le code:

    public void clickNew(View v)
{
    Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
15
demandé sur user484146 2011-01-24 21:18:16

5 réponses

comme d'autres l'ont dit: Faites-en un ImageButton et définissez son attribut onClick

<ImageButton
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:layout_gravity="left"
     android:onClick="scrollToTop"
     android:src="@drawable/to_top_button"
/>

l'image est ici encodée dans un fichier res/drawable/to_top_button.png. Si l'utilisateur clique sur le bouton, la méthode scrollToTop() est appelé. Cette méthode doit être déclarée dans la classe qui définit la mise en page avec le ImageButton comme sa mise en page de contenu.

public void scrollToTop(View v) {
    ...
}

définir le handler OnClick de cette façon vous économise beaucoup de Dactylographie et aussi évite la nécessité de classes intérieures anonymes, ce qui est bénéfique pour l'empreinte de mémoire.

24
répondu Heiko Rupp 2017-03-07 16:34:40

est-ce qu'un ImageButton fait ce que vous voulez?

Le message d'erreur que vous obtenez implique que vous n'avez pas de méthode dans votre activité qui correspond à votre gestionnaire onClick.

vous devriez avoir quelque chose comme clickImage(View view) dans votre activité avec l'implémentation click handling.

3
répondu Cheryl Simon 2011-01-24 18:22:16
1
répondu Jems 2011-01-24 18:22:26

utiliser un ImageButton ;)

1
répondu Rainbowbreeze 2011-01-24 18:22:39

vous avez défini la méthode onclick pour appeler" clickImage " lorsque l'image est cliquée dans votre XML, mais vous n'avez pas créé de méthode clickImage dans votre code. Vous ne devriez pas avoir besoin de configurer l'écouteur onclick du tout. Il suffit d'implémenter la méthode à partir de votre XML et vous devriez être défini.

0
répondu Keith 2011-01-24 18:24:49