Anda dapat menyesuaikan lokasi Toast Anda dengan menggunakan:
setGravity(int gravity, int xOffset, int yOffset)
docs
Ini memungkinkan Anda untuk menjadi sangat spesifik tentang di mana Anda ingin lokasi Toast Anda berada.
Salah satu hal yang paling berguna tentang parameter xOffset dan yOffset adalah Anda dapat menggunakannya untuk menempatkan Toast relatif ke tampilan tertentu.
Misalnya, jika Anda ingin membuat Toast khusus yang muncul di atas Button, Anda bisa membuat fungsi seperti ini:
// v is the Button view that you want the Toast to appear above
// and messageId is the id of your string resource for the message
private void displayToastAboveButton(View v, int messageId)
{
int xOffset = 0;
int yOffset = 0;
Rect gvr = new Rect();
View parent = (View) v.getParent();
int parentHeight = parent.getHeight();
if (v.getGlobalVisibleRect(gvr))
{
View root = v.getRootView();
int halfWidth = root.getRight() / 2;
int halfHeight = root.getBottom() / 2;
int parentCenterX = ((gvr.right - gvr.left) / 2) + gvr.left;
int parentCenterY = ((gvr.bottom - gvr.top) / 2) + gvr.top;
if (parentCenterY <= halfHeight)
{
yOffset = -(halfHeight - parentCenterY) - parentHeight;
}
else
{
yOffset = (parentCenterY - halfHeight) - parentHeight;
}
if (parentCenterX < halfWidth)
{
xOffset = -(halfWidth - parentCenterX);
}
if (parentCenterX >= halfWidth)
{
xOffset = parentCenterX - halfWidth;
}
}
Toast toast = Toast.makeText(getActivity(), messageId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, xOffset, yOffset);
toast.show();
}