2011-10-06 4 views
5

J'ai une liste de produits. Lorsque l'utilisateur clique sur la ligne, le Toast msg affichera le nom du produit.Affichage du message Android Toast

Je veux afficher le Toast sur les line.I chaque ligne de produits veulent montrer le toast à l'endroit où l'utilisateur clique sur la liste » de la ligne

Voir ma photo;

enter image description here centre de la liste Actuellement affichage:

j'ai fait comme ceci:

tablerow.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View view) { 

     Toast prName = Toast.makeText(RetailerOrderActivity.this, 
      " Name : " + productList.get(Integer.parseInt(view.getTag().toString())).getDescription(), 
      Toast.LENGTH_SHORT); 
     prName.setGravity(Gravity.AXIS_SPECIFIED, 0, 0); 
     prName.show(); 
    } 
}); 

Répondre

6

Essayez ceci,

int[] values= new int[2]; 
view.getLocationOnScreen(values); 
int x = values[0]; 
int y = values[1] ; 

toast.setGravity(Gravity.TOP|Gravity.LEFT, x, y); 
+0

Merci de travailler bien – Piraba

+0

apprécier votre travail et astuce pour la gravité – MKJParekh

+1

Salut +1 pour votre travail beau travail –

1

Les 2e et 3e params de setGravity() sont décalages x et y de la constante spécifiée dans le 1er param. Vous devrez obtenir la position x & y de l'objet de vue de ligne que vous souhaitez positionner au-dessus du toast. Ou vous pouvez obtenir le x & y de l'événement tactile.

Personnellement, je voudrais commencer par setGravity(Gravity.TOP|Gravity.LEFT,0,0)

+0

apprécient votre travail et astuce pour la gravité – MKJParekh

1

Je suppose que vous avez un endroit onClick ou onItemClick -listener. Si c'est le cas, un paramètre View lui est transmis. Le View passé est la vue qui a été cliquée (l'entrée de votre liste). Vous pouvez obtenir la position Y en utilisant la méthode getY().

Vous devriez toujours centrer le Toast horizontalement et laisser le Toast décider de sa largeur.

donc votre code pourrait ressembler à ceci (en utilisant un onItemClick -listener):

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    // Get the Y-position: 
    int y = (int) view.getY(); 
    // Create the Toast: 
    Toast toast = Toast.makeText(RetailerOrderActivity.this, 
     " Name : " + productList.get(Integer.parseInt(view.getTag().toString())).getDescription(), 
     Toast.LENGTH_SHORT 
    ); 
    // Set the position: 
    toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, y); 
    // Show the Toast: 
    toast.show(); 
} 

Je n'ai pas testé, mais il devrait fonctionner.

+0

I could't valeurs 'getY (') en utilisant la vue. (View.getY()) .Je suis en train de faire à l'intérieur du TableLayout. \t 'tablerow.setOnClickListener (nouveau View.OnClickListener() { \t \t \t \t onClick public void (Voir vue) { \t \t \t \t \t \t \t \t Toast PRNOM = Toast.makeText (RetailerOrderActivity.this, » Nom: "+ productList.get (Integer.parseInt (view.getTag() toString()).) getDescription(), Toast.LENGTH_SHORT). \t \t \t \t prName.setGravity (Gravity.AXIS_PULL_BEFORE, 0, 0); \t \t \t \t prName.show(); 'comment prendre' getY() 'valeur? – Piraba

+0

Désolé, je ne comprends pas votre question. J'ai oublié de lancer le float retourné par 'getY()' à un int. Voyez si le code fonctionne maintenant. –

+0

Je fais cette partie dans TableLaayout. Lorsque chaque ligne est sélectionnée, alors vous devez le faire.Comment obtenir la valeur y en utilisant TableLayout 'setOnClickListener' ne peut pas obtenir le view.getY() – Piraba