Отображение сообщений Android Toast - PullRequest
5 голосов
/ 06 октября 2011

У меня есть список продуктов.Когда пользователь нажимает на строку, в сообщении 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 ]

6 голосов
/ 06 октября 2011

Попробуйте,

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 голос
/ 06 октября 2011

Полагаю, у вас где-то есть onClick или onItemClick.Если это так, ему передается View -параметр.Переданный View - это вид, по которому щелкнули (запись в вашем списке).Вы можете получить его Y-позицию, используя getY() -метод.

Вы всегда должны центрировать тост горизонтально, и пусть Toast решит, какова его ширина.

Итак, ваш кодможет выглядеть примерно так (используя onItemClick -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();
}

Я не проверял это, но он должен работать.

1 голос
/ 06 октября 2011

2-й и 3-й параметры setGravity() - это смещения x и y от константы, указанной в 1-м параметре. Вам нужно будет получить позицию x & y объекта представления строки, который вы хотите расположить выше. Или вы можете получить x & y события касания.

Лично я бы начал с setGravity(Gravity.TOP|Gravity.LEFT,0,0)

...