2011-10-06 88 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