Wenn ich das Überlaufmenü in meiner Anwendung öffne, sehe ich ein durchgehendes Rechteck der Hintergrundfarbe des Menüs hinter dem Menü selbst während der Eingabe-/Beendigungs-Animationen. Hier ist eine Animation dies zeigt (verlangsamte sich auf 75% Geschwindigkeit):Entfernen Sie zusätzliche Hintergrundfarbe Rechteck von Überlaufmenü betreten/beenden Animationen?
Das Vorhandensein dieses Fremd farbiges Rechteck verdirbt das schöne Eingabe/Exit Animationen! Wie kann ich es unter Beibehaltung aller anderen Toolbar
Styling entfernen?
Forschung
ich auf SO eine Reihe von Antworten auf Toolbar
Styling gelesen haben, und Chris Banes eigene Beiträge zu diesem Thema. Es scheint, dass sich die Verwendung der Tags auf einer Basis in den letzten paar Jahren geändert hat, was es schwierig gemacht hat, überall endgültige Informationen zu finden.
Ich habe dies mit den Versionen 22.1.0 bis einschließlich 23.2.0 der Support-Bibliothek reproduziert.
App Dateien
styles.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@color/colorPrimary</item>
</style>
</resources>
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:style="@style/ToolbarStyle" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Runtime anzeigen Analyse
Als @Commonsware suggested, nahm ich einen Blick auf die Ansichtshierarchie zur Laufzeit. Bearbeiten in den Ergebnissen:
Menü zusammenbrach (Überlauf-Taste vorhanden ist, keine geheimnisvolle zusätzliche Rechteck):
Menü erweitert (Überlauf Menü Ansichten in separaten Window
angezeigt):
Die Hauptanwendungsansicht hie rarchy (wie in der ursprünglichen Window
angezeigt) ist unverändert beim Vergleich der beiden Menü (steady) states. Meine Vermutung ist daher, dass das zusätzliche Rechteck vorübergehend während der Menüanimationen dem Hauptanwendungsfenster hinzugefügt und sofort nach deren Fertigstellung entfernt wird. Ich bin mir nicht sicher warum dies wäre getan - vielleicht ist es ein Kater von einer älteren (und jetzt unbenutzten) Methode zum Anzeigen und Verbergen des Überlaufmenüs? Wenn mein Abzug richtig ist, dann könnte diese Frage gelöst werden, wenn wir herausfinden können, wie wir dieses vorübergehende Verhalten verhindern können ...
, der wie ein separates 'View' aussieht. Sie könnten Hierarchie-Viewer oder "uiautomatorviewer" verwenden, um festzustellen, was das ist. – CommonsWare
@CommonsWare hat die Frage bearbeitet, um Informationen zur Laufzeitansichtshierarchie einzubeziehen. – stkent
Hmmm ... Ich hatte erwartet, dass 'View' sich festgefahren hat und einfach hinter dem echten Überlauf versteckt ist. Leider sind Hierarchy View und 'uiautomatorviewer' nur sehr gut in der statischen Analyse. Ich kenne keine Werkzeuge, die einen 'ViewTreeObserver' verwenden, um zu versuchen, diese Dinge dynamisch zu protokollieren, obwohl ich noch nicht mit Stetho gespielt habe und es vielleicht anbieten könnte. – CommonsWare