2015-02-05 2 views
5

Meine Anwendung hat eine DrawerLayout mit zwei Schubladen, eine links für nav und eine rechts für Benachrichtigungen. Wenn die Anwendung einen Kaltstart ausführt und ich die linke Schublade wische, springt die rechte Schublade von ganz links nach rechts.DrawerLayout mit zwei Schubladen: Rechts "springen", wenn links geöffnet ist?

Es sieht wie folgt aus: http://i.imgur.com/mhoJ7MZ.gifv

Wie im Video gezeigt, ich habe versucht mit DrawerLayout ‚s isDrawerOpen und isDrawerVisible Methoden, um zu versuchen, um zu sehen, ob es denkt tatsächlich die richtige Schublade offen ist, wenn es nicht (da es scheint die Schublade "zu schließen", wenn die linke geöffnet ist, aber ich habe daraus nichts Nützliches bekommen.

Was verursacht den seltsamen Sprung?

Das XML meiner Aktivität ist unten, der vollständige Code ist here.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#ACFF0000" 
     android:gravity="center" 
     android:visibility="gone"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="LEFT DRAWER" 
      android:textSize="24sp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/right_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="end" 
     android:background="#AC00FF00" 
     android:gravity="center" 
     android:visibility="gone"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="RIGHT DRAWER" 
      android:textSize="24sp" /> 
    </LinearLayout> 

</android.support.v4.widget.DrawerLayout> 

Antwort

8

Das Problem kommt aus dem android:visibility="gone" Elemente auf dem LinearLayout s - Aus irgendeinem Grunde Sichtbarkeit gegangen Konflikte mit der für die Logik des DrawerLayout gesetzt zu haben, wenn die Ansicht zeigt oder nicht, so versucht es, es zu verbergen.

Nehmen Sie das aus dem XML verursacht alles gleich aussehen (da DrawerLayout schaut auf die layout_gravity zu entscheiden, welche Kindansichten Schubladen sind und versteckt sich selbst) und nicht den seltsamen Sprung.

+0

Testen: Diese Antwort ist hervorragend. –