Frage

Wenn ich Toast verwende auf dem Bildschirm einig Popup-Text angezeigt werden, es zeigt den Text ein wenig über dem unteren Rand des Bildschirms, der die Standardposition ist.

Jetzt möchte ich es in der Mitte des Bildschirms oder irgendwo angezeigt werden nach meiner Wahl.

Kann jemand Führer mir, wie dies zu erreichen?

War es hilfreich?

Lösung

die Dokumentation ,

  

Positionierung Ihres Toast

     

Eine Standard Toast Meldung erscheint am unteren Rand des Bildschirms,   horizontal zentriert. Sie können diese Position mit der Änderung   setGravity(int, int, int) Methode. Dies nimmt drei Parameter: a   Gravity Konstante, ein x-position Offset und ein y-position gegenüber.

     

Zum Beispiel, wenn Sie entscheiden, dass der Toast in der erscheinen soll   Ecke links oben, können Sie die Schwerkraft wie folgt einstellen:

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

Wenn Sie die Position nach rechts verschieben möchten, erhöhen Sie den Wert von   Der zweite Parameter. Schubsen es nach unten, erhöhen Sie den Wert des letzten   Parameter.

Andere Tipps

Wenn Sie einen Fehler erhalten, dass Sie Maketext aufrufen müssen, der folgende Code wird das Problem beheben:

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

Sie können den Standort Ihres Toast anpassen, indem Sie:

setGravity(int gravity, int xOffset, int yOffset)

docs

Auf diese Weise können Sie sehr spezifisch sein, wo Sie den Speicherort Ihrer Toast wollen.

Eine der nützlichsten Dinge über die xOffset und yOffset Parameter ist, dass Sie sie verwenden können, den Toast in Bezug auf eine bestimmte Ansicht zu platzieren.

Zum Beispiel, wenn Sie eine benutzerdefinierte Toast, das erscheint auf einem Knopf machen möchten, können Sie eine Funktion wie diese erstellen:

// 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();

Der obige Code ist u Toast des Bildschirm in der Mitte angezeigt wird dazu beitragen, oder nach ur Wahl für diesen Satz nur der Toasts Schwerkraft nach ur Notwendigkeit

Hinweis: Für dieses Verfahren hat u Objekt Toast verwenden

Die Methode, um die Farbe, Position und Hintergrundfarbe Toast zu ändern ist:

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();

Für Zeile für Zeile Erläuterung: https://www.youtube.com/watch?v = 5bzhGd1HZOc

Toast auf Topin Bildschirm Einstellung

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

jetzt unten

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

die gleiche Art, wie wir Toast in links, rechts und auch Zentrum einstellen

Klicken Sie auf hier

// Eine benutzerdefinierte Toast Klasse, wo Sie benutzerdefinierte oder Standard-Toast zeigen kann wie gewünscht)

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();
            }

        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top