Question

Quand j'utilise Toast pour afficher un texte contextuel à l'écran, il affiche le texte un peu au-dessus du bas de l'écran, qui est la position par défaut.

Maintenant, je veux montrer au milieu de l'écran ou quelque part en fonction de mon choix.

Quelqu'un peut-il me guider comment y parvenir?

Était-ce utile?

La solution

De la documentation ,

  

Positionnement Toast

     

Une notification de pain grillé standard apparaît au bas de l'écran,   centrée horizontalement. Vous pouvez modifier cette position avec le   Procédé setGravity(int, int, int). Cela accepte trois paramètres: un   Gravity constant, un x-position offset, et un y-position décalage.

     

Par exemple, si vous décidez que le pain doit apparaître dans la   coin supérieur gauche, vous pouvez définir la gravité comme ceci:

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

Si vous voulez pousser la position à droite, augmenter la valeur de   le second paramètre. Pour déplacer vers le bas, augmenter la valeur du dernier   paramètre.

Autres conseils

Si vous obtenez une erreur indiquant que vous devez appeler maketext, le code suivant corriger:

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

Vous pouvez personnaliser l'emplacement de votre Toast en utilisant:

setGravity(int gravity, int xOffset, int yOffset)

docs

Cela vous permet d'être très précis sur l'endroit où vous voulez que l'emplacement de votre Toast être.

L'une des choses les plus utiles sur les paramètres et yOffset est xOffset que vous pouvez les utiliser pour placer le Toast par rapport à un certain point de vue.

Par exemple, si vous voulez un toast personnalisé qui apparaît sur le dessus d'un bouton, vous pouvez créer une fonction comme ceci:

// 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 toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG);
 toast.setGravity(Gravity.CENTER, 0, 0);
 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 est aidera u pour afficher des toasts au milieu de l'écran ou selon ur choix pour que juste régler la gravité de pain grillé selon ur besoin

Note: Pour ce processus u doivent utiliser l'objet de Toast

Le procédé pour changer la couleur, la position et la couleur d'arrière-plan de 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 la ligne par ligne d'explication: https://www.youtube.com/watch?v = 5bzhGd1HZOc

réglage

pain grillé à l'écran Topin

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

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 façon que nous pouvons mettre en toast à gauche, à droite et aussi centre

Cliquez

// Une classe de pain grillé personnalisé où vous pouvez afficher des toasts personnalisée 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();
            }

        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top