Bạn có thể tùy chỉnh vị trí của Toast bằng cách sử dụng:
setGravity(int gravity, int xOffset, int yOffset)
tài liệu
Điều này cho phép bạn rất cụ thể về nơi bạn muốn vị trí của Toast của bạn.
Một trong những điều hữu ích nhất về các tham số x Offerset và y Offerset là bạn có thể sử dụng chúng để đặt Toast tương đối với một Chế độ xem nhất định.
Ví dụ: nếu bạn muốn tạo một Toast tùy chỉnh xuất hiện trên đầu Nút, bạn có thể tạo một chức năng như thế này:
// 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();
}