Установите тост гравитации сверху слева в любом текстовом представлении Android

Я хочу установить тост-сообщение в верхней | левой позиции в любом текстовом представлении моего приложения, поэтому я использовал этот код

public class CustomToast extends Activity {

TextView mTextView1;
TextView mTextView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_toast);
      mTextView1=(TextView)findViewById(R.id.textView);
      mTextView2=(TextView)findViewById(R.id.textView2);
    mTextView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showCustomAlert( );
        }
    });
    mTextView2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showCustomAlert( );
        }
    });
}
public void showCustomAlert( )
{

    Context context = getApplicationContext();
    // Create layout inflator object to inflate toast.xml file
    LayoutInflater inflater = getLayoutInflater();

    // Call toast.xml file for toast layout
    View toastRoot = inflater.inflate(R.layout.toast, null);

    Toast toast = new Toast(context);

    // Set layout to toast
    toast.setView(toastRoot);
    toast.setGravity(Gravity.TOP|Gravity.LEFT ,0, 0);
    toast.setDuration(2000);
    toast.show();

  }
}

Когда я запускаю код, приведенный выше, тост отображается в верхней части экрана каждый раз, когда текст не отображается, см. Изображение ниже.

Изначально два экрана просмотра текста

Когда я нажимаю на второе текстовое представление, я получаю эту позицию тоста

Любая идея, как я могу решить эту проблему?

2 ответа

Все, что вам нужно сделать, это управлять позицией Toast в соответствии с позицией текстового просмотра на вашем экране. Затем вам нужно динамически добавлять координаты представления каждый раз к вашему Toast. Поэтому вам нужно получить координаты вида, по которому щелкают, используя:

buttonView.getLocationOnScreen(location);

Затем установите положение тоста:

toast.setGravity(Gravity.TOP|Gravity.LEFT,buttonView.getRight()+5, 
location[1]-10);

Выше приведено только для справки. Для более ясной и описательной идеи, пожалуйста, смотрите Это и Это.

Используйте код ниже:

Toast toast= Toast.makeText(getApplicationContext(), 
"Your string here", Toast.LENGTH_SHORT);  
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
toast.show();
Другие вопросы по тегам