2013-08-04 13 views
12

Sto tentando di implementare il modello del cassetto di navigazione basato sulla mia app. Ho scaricato il codice di esempio da here e l'ho eseguito e il 90% delle volte il cassetto funziona correttamente, ma a volte il cassetto si blocca quando provo ad aprirlo. Ho un modo di replicare la situazione ma non sempre funziona. Quello che faccio è:Errore nel cassetto di navigazione Android utilizzando l'esempio

1- Esegui il codice di esempio così com'è.
2- Mettere il dito sul bordo sinistro per ottenere il peek cassetto
3- Lasciate andare il dito e premere sul frammento principale
4- cercare di aprire il cassetto, come al solito

A volte il cassetto rimane bloccato sulla modalità di sbirciatina, non importa quanto si fa scorrere il dito verso destra per aprire il cassetto di più. Qualcuno ha/ha risolto questo problema?

+2

Possibile duplicato di http://stackoverflow.com/questions/17896052/why-does-drawerlayout-sometimes-glitch-upon-opening/18086735#18086735 – paul

risposta

19

Ho affrontato un problema simile a quello menzionato da voi. Ho avuto una vista elenco all'interno di un layout relativo (FILL_PARENT). Ogni volta che il contenuto nella visualizzazione elenco è inferiore e quando ho trascinato l'area all'esterno della visualizzazione elenco, il riquadro di navigazione è stato colpito. L'impostazione android:clickable="true" per il layout relativo ha risolto il problema. Spero che questo possa aiutare.

+0

Hai impostato android: clickable = "true" nel relativo layout del cassetto di navigazione in cui hai la listview? – xlar8or

+2

È necessario impostare 'clickable =" true "' su qualsiasi layout utilizzato per contenere il contenuto principale. – mato

16

Per chiarire sulla risposta di Viji, se si utilizza qualcosa come l'esempio cassetto di navigazione fornito:

<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. --> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- As the main content view, the view below consumes the entire 
     space available using match_parent in both dimensions. --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- android:layout_gravity="start" tells DrawerLayout to treat 
     this as a sliding drawer on the left side for left-to-right 
     languages and on the right side for right-to-left languages. 
     The drawer is given a fixed width in dp and extends the full height of 
     the container. A solid background is used for contrast 
     with the content view. --> 
    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 

Aggiunta android:clickable="true" al FrameLayout sembra risolvere il problema.

+1

Io uso un 'LinearLayout', e funziona anche. :) – mato

Problemi correlati