我有产品清单。当用户单击该行时,Toast
msg将显示产品名称。
我想在每个产品行上显示Toast
。我想在用户点击列表'行
看我的照片;
目前显示列表中心:
我确实喜欢这个:
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();
}
});
答案 0 :(得分: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);
答案 1 :(得分:1)
setGravity()
的第2和第3个参数是第1个参数中指定的常数的x和y偏移量。您需要获取要在上面放置吐司的行视图对象的x和y位置。或者你可以得到触摸事件的x& y。
就个人而言,我会从setGravity(Gravity.TOP|Gravity.LEFT,0,0)
答案 2 :(得分:1)
我猜你有一个onClick
或onItemClick
- 听众。如果是,则传递View
- 参数。传递的View
是单击的视图(列表的条目)。您可以使用getY()
- 方法获取它的Y位置。
你应该始终水平居中Toast并让Toast
决定它的宽度。
所以你的代码可能看起来像这样(使用onItemClick
- 监听器):
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();
}
我没有测试它,但它应该可以工作。