2011-10-06 108 views
5

我有產品清單。當用戶點擊該行時,將顯示Toast msg產品的名稱。Android Toast訊息顯示

我要顯示在每一個產品排line.I的Toast要顯示的吐司在列表上點擊用戶」行

見我拍照的地方;

enter image description here 目前顯示列表的中心:

我不喜歡這樣的:

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

回答

6

試試這個,

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

感謝工作正常 – Piraba

+0

感謝您爲Gravity提供的工作和技巧 – MKJParekh

+1

嗨+1爲您的工作做好工作 –

1

第2和第3 setGravity() PARAMS是從1 PARAM指定的常量x和y偏移。您將需要獲取想要在上方放置烤麪包的行視圖對象的y位置。或者您可以獲得觸摸事件的y &。

個人而言,我會先從setGravity(Gravity.TOP|Gravity.LEFT,0,0)

+0

欣賞你的工作和技巧的重力 – MKJParekh

1

我猜你有一個onClickonItemClick章24 -listener地方。如果是這樣,則將View-參數傳遞給它。通過的View是被點擊的視圖(您的列表中的條目)。您可以使用getY()-方法獲得它的Y位置。

您應該始終居中居中Toast,並讓Toast決定它的寬度。

所以你的代碼可能是這個樣子(使用onItemClick章24 -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(); 
} 

我沒有測試它,但它應該工作。

+0

我便無法使用視圖'的getY()'值。(view.getY())。我是在TableLayout裏面做什麼。 \t'tablerow.setOnClickListener(新View.OnClickListener(){ \t \t \t \t公共無效的onClick(查看視圖){ \t \t \t \t \t \t \t \t吐司prName = Toast.makeText(RetailerOrderActivity.this,」姓名: 「+ 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(); '如何獲取getY()'值? – Piraba

+0

對不起,我不明白你的問題。我忘了將'getY()'返回的float轉換爲int。看看現在的代碼是否有效。 –

+0

我正在TableLaayout中完成這部分。當每一行被選中,然後需要這樣做,以便使用TableLayout'setOnClickListener'來獲取y值。無法獲得view.getY() – Piraba