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.
- Android - ¿Cómo excute el brindis cada 10 segundos usando ScheduledExecutorService?
- Error debido a la combinación no válida de Toast y OnClickListener
- Ocultar toast
- Valor siempre devuelve 0 donde debe devolver el número de fila insertada
- ¿Por qué no aparece mi brindis?
¿Puede alguien guiarme cómo lograr esto?
- Cómo mostrar un mensaje Toast desde una clase que no se extiende Actividad
- ¿Terminar la actividad después de que el mensaje del pan tostado desaparezca?
- Tostadas que llegan varias veces
- Tostada personalizada en android: un ejemplo sencillo
- Visualización del mensaje de Android Toast
- Cómo hacer tostadas de otro hilo (sans runOnUiThread)
- Cómo hacer un mensaje tostado cuando se hace clic en el botón
- ¿Cuál es la duración de un brindis LENGTH_LONG y LENGTH_SHORT
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 deGravity
, un desplazamiento dex-position
y un desplazamiento dey-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
- ¿Cuál es el propósito de la etiqueta <merge> de Android en los diseños XML?
- Cómo inflar una vista con un diseño