Wie Position von Toast in Android ändern?
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?
Lösung
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: aGravity
Konstante, einx-position
Offset und einy-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)
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();
}
}