2012-03-17 3 views
1

Comment faire une image cliquable dans Android? Je ne souhaite pas utiliser un bouton image car il place l'image sur un bouton. i essayé d'utiliser les codes suivants, mais rien ne se passe en cliquant .. en xml:rendre une image cliquable dans android 2

<ImageView 
android:id="@+id/arrow1" 
android:src="@drawable/arrow" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_x="12dp" 
android:layout_y="90dp" 
android:clickable="true" 
android:onClick="onClick"> 
</ImageView> 

dans .java:

final ImageView diskView4 = (ImageView) findViewById(R.id.arrow1); 


diskView4.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v){ 
     //my codes 
    } 
}); 
+0

android: onclick = "onClick" supprimer cette ligne ... –

+0

Changer le nom onClick dans le fichier XML de mise en page. comme, android: onClick = "imageClick" dans java public void imageClick (Voir v) vous ne pouvez pas utiliser le nom de méthode onClick(). – user370305

Répondre

3

pas besoin d'ajouter l'attribut supplémentaire

<ImageView 
android:id="@+id/arrow1" 
android:src="@drawable/arrow" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_x="12dp" 
android:layout_y="90dp" /> 

Cette fera et votre code semble bien. Trace votre clic par

diskView4.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v){ 
     System.out.println("image clicked...");//check logcat 
    } 
}); 
+0

merci .. où est logcat? – sumit

+0

voir ce http://developer.android.com/guide/developing/debugging/ddms.html ouvrir l'onglet Logcat et vous en mesure de voir votre message système. –

+0

est-il pour Linux seulement parce que j'utilise Windows .. – sumit

2

Définir l'arrière-plan de la ImageButton à la transparence ou encore mieux à android.R.attr.selectableItemBackground. alors vous avez même un effet onClick comme le bouton standard sans bordure.

<ImageButton 
      android:background="?android:attr/selectableItemBackground" 
      android:src="@drawable/yourimage "/> 
1

L'utilisation de la balise XML android:onClick="doSomething" est très simple.

Dans le contexte où vous avez gonflé la mise en page (généralement une activité), vous devez déclarer une fonction comme celle

public void doSomething(View view)

Vous pouvez trouver cette information dans la documentation ici

http://developer.android.com/reference/android/view/View.html#attr_android:onClick

De cette façon, vous obtenez une activité plus propre si Image onClick n'est pas dynamique.

EDIT

Exemple, dans la mise en page XML

<ImageView 
    android:id="@+id/image_id" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:src="@drawable/image" 
    android:onClick="doSomething" /> 

Dans l'activité si vous voulez ouvrir une nouvelle activité par exemple

class ImageActivity extend Activity{ 
    @Override 
    public void onCreate(Bundle params){ //... } 

    public void doSomething(View view){ 
     startActivity(new Intent(this, AnotherActivity.class)); 
    } 
} 

Dans l'élément View vous la vue cliquée, de sorte que vous pouvez identifier quel élément a déclenché la fonction.

public void doSomething(View view){ 
    if(view.getId() == R.id.image_id) 
     startActivity(new Intent(this, AnotherActivity.class)); 
    else 
     Log.i("Image", "Try to open the Activity from another view different from ImageView") 
} 
1

Si les solutions ci-dessus ne fonctionnent pas pour vous, vous pouvez essayer ceci.

main.xml

<ImageView 
     android:id="@+id/img_call_icon"   
     android:layout_width="40px" 
     android:layout_height="40px" 
     android:clickable="true" 
     android:onClick="onClickHandler"/> 

Et MyActivity.java

public void onClickHandler (View v) 
    { 
     switch (v.getId()) { 
     case R.id.img_call_icon: 

     // put your onclick code here 
    } 
} 

Merci ...

+0

merci, c'est évidemment un bon moyen de le faire. . – sumit

Questions connexes