Réponses:
De la documentation ,
Positionner votre toast
Une notification de toast standard apparaît près du bas de l'écran, centrée horizontalement. Vous pouvez modifier cette position avec la
setGravity(int, int, int)
méthode. Cela accepte trois paramètres: uneGravity
constante, unx-position
décalage et uny-position
décalage.Par exemple, si vous décidez que le toast doit apparaître dans le coin supérieur gauche, vous pouvez définir la gravité comme suit:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
Si vous souhaitez déplacer la position vers la droite, augmentez la valeur du deuxième paramètre. Pour le pousser vers le bas, augmentez la valeur du dernier paramètre.
Gravity.CENTER_VERTICAL
mettra le toast au milieu de l'écran.
Si vous obtenez une erreur indiquant que vous devez appeler makeText, le code suivant le corrigera:
Toast toast= Toast.makeText(getApplicationContext(),
"Your string here", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
new Toast(context)
lieu deToast.makeText(...)
Vous pouvez personnaliser l'emplacement de votre Toast en utilisant:
setGravity(int gravity, int xOffset, int yOffset)
Cela vous permet d'être très précis sur l'endroit où vous souhaitez que l'emplacement de votre toast soit.
L'une des choses les plus utiles à propos des paramètres xOffset et yOffset est que vous pouvez les utiliser pour placer le Toast par rapport à une certaine vue.
Par exemple, si vous souhaitez créer un Toast personnalisé qui apparaît au-dessus d'un bouton, vous pouvez créer une fonction comme celle-ci:
// 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();
Le code ci-dessus vous aidera à afficher le toast au milieu de l'écran ou selon votre choix pour cela, il suffit de régler la gravité du toast en fonction de votre besoin
Remarque: Pour ce processus, vous devez utiliser l'objet de Toast
La méthode pour changer la couleur, la position et la couleur d'arrière-plan du pain grillé est:
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();
Pour une explication ligne par ligne: https://www.youtube.com/watch?v=5bzhGd1HZOc
définition de pain grillé sur l'écran supérieur
toast.setView(view);
toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
maintenant en bas
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 même manière, nous pouvons mettre un toast à gauche, à droite et aussi au centre
Cliquez ici
// Une classe de toasts personnalisés où vous pouvez afficher des toasts personnalisés ou par défaut comme vous le souhaitez)
public class ToastMessage {
private Context context;
private static ToastMessage instance;
/**
* @param context
*/
private ToastMessage(Context context) {
this.context = context;
}
/**
* @param context
* @return
*/
public synchronized static ToastMessage getInstance(Context context) {
if (instance == null) {
instance = new ToastMessage(context);
}
return instance;
}
/**
* @param message
*/
public void showLongMessage(String message) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
/**
* @param message
*/
public void showSmallMessage(String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
/**
* The Toast displayed via this method will display it for short period of time
*
* @param message
*/
public void showLongCustomToast(String message) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
msgTv.setText(message);
Toast toast = new Toast(context);
toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
/**
* The toast displayed by this class will display it for long period of time
*
* @param message
*/
public void showSmallCustomToast(String message) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
msgTv.setText(message);
Toast toast = new Toast(context);
toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();
}
}