CoordinatorLayout überlappend

9

Sehen Sie sich das folgende Layout an. Sie werden sehen, dass der schwebende Knopf zu weit nach unten zeigt. Dies liegt daran, dass die Symbolleiste und die Registerkarten angezeigt werden und die Höhe des ViewPagers falsch ist. Irgendwie mache ich etwas falsch mit der Layouthöhe. Aber wie kann ich das beheben?

Anmerkung: Der ViewPager ist der Hauptinhalt und enthält ein Fragment mit einem ListView und einem Google Map V2 in der zweiten Registerkarte.

Das ist das Layout XML:

%Vor%

Hier ist das Layout für das Fragment in der ersten Registerkarte (die Liste):

%Vor%

Nur um sicherzugehen; Es ist kein Problem mit dem FAB. Siehe dieses Bild. Es ist ein ähnliches Layout. Ein CoordinatorLayout mit einer ToolBar und einem ViewPager, der durch alle Detaileinträge wischt (daher werden keine Tabs benötigt). Und wieder scheint die innere Ansicht zu lang zu sein (die gleiche Höhe wie die ToolBar).

    
Matthias 15.07.2015, 21:15
quelle

2 Antworten

3
  1. Sie sollten android.support.v7.widget.RecyclerView und nicht ListView
  2. verwenden
  3. Obwohl Sie bereits android.support.v7.widget.RecyclerView verwenden, müssen Sie 100% sicher sein, dass Sie in Ihren build.gradle-Abhängigkeiten declard compile 'com.android.support:recyclerview-v7:23.0.0' haben. Ich stieß auf das gleiche Problem, wo der Viewpager die Systemtasten überlappt. Ich habe es behoben, indem ich einfach diese Abhängigkeit hinzugefügt habe.
Mark Pazon 18.08.2015, 18:06
quelle
1

Alles, was Sie "koordinieren" müssen, muss direkt Kind von CoordinatorLayout sein, einschließlich der AppBar , RecyclerView (ListView in API21 + oder andere Ansichtsunterstützung verschachtelter Bildlauf ist OK) oder FAB usw.

Der Grund, warum Ihr FAB außerhalb des Bildschirms liegt, ist:

  1. ViewPager hat @string/appbar_scrolling_view_behavior , das Werkzeug dieses Verhaltens versetzt die Ansicht beim Scrollen.
  2. Sie setzen FAB in ViewPager .

Wenn also der Offset von ViewPager geändert wird, wird alles innerhalb von ViewPager zusammen versetzt (extra CoordinatorLayout hat keine Hilfe, um den Offset zu ändern).

Um dies zu beheben, verwenden Sie nicht CoordinatorLayout outside ViewPager .

Oder:

  1. Setzen Sie Ihre FAB von ViewPager ab, damit sie nicht mit ViewPager .blättert.
  2. Wenn der FAB nur mit einigen Ihrer Seiten funktioniert, hide() bei Bedarf.

Übrigens gibt es eine sehr gute App, Käsequadrat-Probe , um die Design-Bibliothek zu demonstrieren.

    
Tankery 05.06.2016 10:04
quelle