2015-07-20 1 views
5

In meinem Fragmente, ich ausführen:Wie kann eine Snackbar aus einem Fragment in der richtigen Ansicht angezeigt werden?

Snackbar.make(view, message, Snackbar.LENGTH_LONG);

jedoch irgendwie die Ansicht falsch ist, wie die:

mActionHelper.showUndoBar(getView(), itemsList, lastPositionSelected);

Der showUndoBar() -Methode einfach eine Snackbar mit dem Formular erstellt Die Snackbar reagiert nicht auf Gesten zum Abweisen von Gesten und füllt den unteren linken Quadranten nur in der Split-Ansicht des Tabletts aus. Die meisten Snackbar-Beispiele demonstrieren den Aufruf der Snackbar aus einer Aktivität, daher denke ich, dass die Tatsache, dass ich ein Fragment verwende, das Problem ist. Wie kann ich die richtige Ansicht erhalten und weitergeben, damit die Snackbar korrekt angezeigt wird?

+0

Ich hatte das gleiche Problem und jemand kommentiert, um alles in ein CoordinatorLayout zu wickeln. Wurde nicht überprüft, obwohl – xorgate

Antwort

3

Ihr Problem bezieht sich nicht auf Ihre Verwendung von Fragmenten.

Wenn Sie kein CoordinatorLayout in Ihrem Layout haben, werden Sie nicht wischen, um die Funktionalität zu deaktivieren, und auf Tablets wird das Display der Snackbar ganz links in Ihrem Layout angezeigt. Die Snackbar hat eine maximale Breite, so dass sie nicht die volle Breite eines Tablets ausfüllt. Sie können aber auch die CoordinatorLayout verwenden, um die Snackbar auf Tabletten zu zentrieren, falls gewünscht.

Vom Android Snackbar.make documentation:

Snackbar werden versuchen, eine übergeordnete Ansicht finden Snackbar Ansicht von den Wert zu halten gegeben anzuzeigen. Snackbar wird den View Tree hinauflaufen und versuchen, ein passendes Elternteil zu finden, das als eine CoordinatorLayout- oder -Fenster-Dekor-Inhaltsansicht definiert ist, je nachdem, was zuerst eintritt.

eine CoordinatorLayout Ihrer Ansicht Hierarchie Mit erlaubt Snackbar zu ermöglichen, bestimmte Funktionen, wie Swipe-to-entlassen und automatisch Verschieben von Widgets wie FloatingActionButton.

+0

Wenn wir eine Snackleiste in Fragmenten anzeigen möchten, stellen Sie sicher, dass das Fragmentwurzel/Elternlayout das Koordinatenlayout sein muss. – sssvrock