Cómo cambiar la posición de Toast en Android?

Cuando uso Toast para mostrar algún texto emergente en la pantalla, muestra el texto un poco por encima de la parte inferior de la pantalla, que es la posición predeterminada.

Ahora quiero mostrarlo en medio de la pantalla o en algún lugar según mi elección.

¿Puede alguien guiarme cómo lograr esto?

De la documentación ,

Posicionamiento de su brindis

Aparece una notificación de tostado estándar cerca de la parte inferior de la pantalla, centrada horizontalmente. Puede cambiar esta posición con el setGravity(int, int, int) . Esto acepta tres parámetros: una constante de Gravity , un desplazamiento de x-position y un desplazamiento de y-position .

Por ejemplo, si decide que el brindis debe aparecer en la esquina superior izquierda, puede establecer la gravedad de la siguiente manera:

 toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 

Si desea desplazar la posición hacia la derecha, aumente el valor del segundo parámetro. Para desplazarlo hacia abajo, aumente el valor del último parámetro.

Como un aparte si obtiene el error que indica que debe llamar a makeText, el código siguiente lo hace funcionar:

 Toast toast= Toast.makeText(getApplicationContext(), "Your string here", Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0); toast.show(); 

Puede personalizar la ubicación de su Toast utilizando:

setGravity(int gravity, int xOffset, int yOffset)

Docs

Esto le permite ser muy específico sobre dónde desea que la ubicación de su Toast sea.

Una de las cosas más útiles acerca de los parámetros xOffset y yOffset es que puedes usarlos para colocar el Toast en relación con una determinada Vista.

Por ejemplo, si desea crear un Toast personalizado que aparezca encima de un Botón, podría 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(); } 
 Toast mytoast= Toast.makeText(getApplicationContext(), "Toast Message", 1); mytoast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0); // for center horizontal //mytoast.setGravity(Gravity.CENTER_VERTICAL); // for center vertical //mytoast.setGravity(Gravity.TOP); // for top mytoast.show(); 

El código anterior le ayudará a mostrar la tostada en el medio de la pantalla o de acuerdo con la elección de ur para que acaba de establecer la gravedad tostada de acuerdo a su necesidad ur

Nota: Para este proceso tienes que usar el objeto de Toast

  Toast toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); 

Establecer el brindis en la pantalla superior

 toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show(); 

Ahora en la parte inferior

  toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show(); 

De la misma manera que podemos poner tostadas en izquierda, derecha y también centro

Haga clic aquí

El método para cambiar el color, la posición y el color de fondo de la tostada es:

  Toast toast=Toast.makeText(getApplicationContext(),"This is advanced toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.BOTTOM | Gravity.RIGHT,0,0); View view=toast.getView(); TextView view1=(TextView)view.findViewById(android.R.id.message); view1.setTextColor(Color.YELLOW); view.setBackgroundResource(R.color.colorPrimary); toast.show(); 

Para una explicación línea por línea: https://www.youtube.com/watch?v=5bzhGd1HZOc

  • Cómo hacer que el mensaje de tostadas personalizado tome toda la pantalla
  • Cómo cancelar Toast creado en un método diferente en android?
  • Incompatibilidad de tipo: no se puede convertir void to toast
  • Cómo personalizar backgroud, color de fondo y color de texto para Toast en android
  • ¿Cómo puedo mostrar un brindis por una duración específica?
  • ¿De dónde viene esta tostada?
  • Java.lang.RuntimeException: No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ();
  • Cancelar un brindis ya abierto en Android
  • Toast.makeText (...) .show () es a veces mal alineado
  • ¿Cómo puede obtener la luz azul halo de una tostada en mi tostada personalizado también?
  • No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () 3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.