Android Toast消息显示

时间:2011-10-06 08:53:25

标签: java android android-layout toast

我有产品清单。当用户单击该行时,Toast msg将显示产品名称。

我想在每个产品行上显示Toast。我想在用户点击列表'行

的地方显示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();
    }
});

3 个答案:

答案 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)

我猜你有一个onClickonItemClick - 听众。如果是,则传递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();
}

我没有测试它,但它应该可以工作。