2011-10-06 15 views
5

Mam listę produktów. Gdy użytkownik kliknie wiersz, wiadomość zostanie wyświetlona z nazwą produktu.Wyświetlanie wiadomości Android Toast

Chcę wyświetlić Toast na line.I każdym rzędzie produkt chcą pokazać Toast w miejscu, w którym użytkownik kliknie na liście”rząd

zobaczyć moje zdjęcia;

enter image description here Obecnie wyświetlanie centrum listy:

zrobiłem tak:

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

Odpowiedz

6

Spróbuj tego,

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

Dziękuję działa dobrze – Piraba

+0

doceń swoją pracę i sztuczkę dla Gravity – MKJParekh

+1

Hej +1 za twoją pracę miłą pracę –

1

2. i 3. params z setGravity() są xiy przesunięcia od stałej określone w 1. param. Musisz uzyskać pozycję x & y obiektu widoku wiersza, w którym chcesz umieścić toast powyżej. Lub możesz uzyskać x & y zdarzenia dotyku.

Osobiście chciałbym zacząć setGravity(Gravity.TOP|Gravity.LEFT,0,0)

+0

cenią swoją pracę i sztuczki dla Grawitacji – MKJParekh

1

Chyba masz onClick lub onItemClick -listener gdzieś. Jeśli tak, to zostanie przekazany do niego parametr View. Podany View to widok, który został kliknięty (wpis na liście). Możesz uzyskać jego pozycję Y za pomocą metody getY().

Zawsze należy wyśrodkować Toast poziomo i niech Toast zdecydować to szerokość.

Więc twój kod może wyglądać następująco (przy użyciu 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(); 
} 

nie testowałem, ale powinno działać.

+0

could't 'getY()' wartości za pomocą widoku. (View.getY()) .I robie wewnątrz TableLayout. \t 'tablerow.setOnClickListener (nowa View.OnClickListener() { \t \t \t \t public void onClick (Widok) { \t \t \t \t \t \t \t \t Toast prName = Toast.makeText (RetailerOrderActivity.this” Nazwa: "+ productList.get (Integer.parseInt (view.getTag() toString())). pobierzOpis() Toast.LENGTH_SHORT). \t \t \t \t prName.setGravity (Gravity.AXIS_PULL_BEFORE, 0, 0), \t \t \t \t prName.show(); 'jak wziąć wartość' getY() '? – Piraba

+0

Niestety, nie rozumiem twojego pytania. Zapomniałem rzucić float zwrócony przez 'getY()' do int. Sprawdź, czy kod działa teraz. –

+0

Robię tę część w TableLaayout. po wybraniu każdego wiersza należy to zrobić. Jak uzyskać wartość y za pomocą TableLayout 'setOnClickListener'. Nie można uzyskać widoku.getY() – Piraba

Powiązane problemy