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.
- ¿Cómo dejar de mostrar el mensaje de Toast cuando la aplicación está cerrada?
- Eliminar "Gracias. Su artículo aparecerá en breve. "Tostada de aparecer después de la compra de InApp
- Contabilización del mensaje Toast de un hilo
- Error al mostrar tostadas
- ¿Cuál es el valor de Toast.LENGTH_LONG y Toast.LENGTH_SHORT?
¿Puede alguien guiarme cómo lograr esto?
- Cómo configurar la tipografía para brindar?
- ¿Por qué son los mensajes emergentes de Android llamados brindis?
- Tostada y duración
- Establecer Toast Aparecer Longitud
- Shared Toast no se muestra en Android 3.0.1 en Motorola Xoom
- Error debido a la combinación no válida de Toast y OnClickListener
- ¿De dónde viene esta tostada?
- Android - ¿Cómo excute el brindis cada 10 segundos usando ScheduledExecutorService?
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