Android Toast消息显示

5
我有一份产品列表。当用户点击行时,会显示一个提示消息,其中包含该产品的名称。
我想在每个产品行上显示提示消息。我希望在用户单击列表行的位置显示提示消息。
请参见我的图片: 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个回答

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

我猜你在某个地方有一个 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();
}

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


我无法使用view.(view.getY())获取getY()值。我正在TableLayout内部进行操作。`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_PULL_BEFORE, 0, 0); prName.show(); ` 如何获取getY()值? - Piraba
抱歉,我不明白你的问题。我忘记将 getY() 返回的浮点数转换为整数。现在看看代码是否可以工作了。 - Lukas Knuth
我正在使用TableLayout完成这一部分。当选择每一行时,需要执行此操作。如何使用TableLayout setOnClickListener获取y值。无法获取view.getY()。 - Piraba

1

setGravity()的第二个和第三个参数是相对于第一个参数指定的常量的x和y偏移量。您需要获取要将toast放置在其上方的行视图对象的x和y位置。或者您可以获取触摸事件的x和y。

个人建议从setGravity(Gravity.TOP|Gravity.LEFT,0,0)开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接