Puede personalizar la ubicación de su pan tostado mediante el uso de:
setGravity(int gravity, int xOffset, int yOffset)
docs
Esto le permite ser muy específico acerca de dónde desea que la ubicación de su pan tostado que sea.
Una de las cosas más útiles acerca de los parámetros xOffset y yOffset es que puede usarlos para colocar el Toast relativo a una determinada Vista.
Por ejemplo, si usted quiere hacer un pan tostado personalizado que aparece en la parte superior de un botón, se puede crear una función como esta:
// 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();
}
¿Cuáles son los valores enteros allí? ¿Son dpi? o cual es el maximo? – clifgray
Podría estar señalando lo obvio, pero 'Gravity.CENTER_VERTICAL' pondrá la tostada en el medio de la pantalla. – Felix
xey están en píxeles, por lo que el máximo es el ancho/alto de la pantalla. – bluewhile