2013-08-12 10 views
5

Sto tentando di utilizzare lo SlidingPaneLayout. La vista a sinistra è una ListFragment e la vista a destra è una vista di dettaglio. Il layout è visualizzato correttamente e posso farlo scorrere. Ma se la vista di dettaglio è davanti all'elenco e faccio clic su di essa, l'elenco sullo sfondo riceve il clic.Fare clic sugli eventi su SlidingPaneLayout

mio layout si presenta così:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SlidingPaneLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/sliding_pane_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <fragment android:name="net.name.multiremote.RemoteListFragement" 
       android:id="@+id/fragment_remote_list" 
       android:layout_width="580dp" 
       android:layout_height="match_parent" 
       android:layout_gravity="left" /> 

    <fragment 
     android:id="@+id/fragment_remote" 
     android:name="net.name.multiremote.RemoteFragment" 
     android:layout_width="850dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

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

io uso questo codice per impostare lo scatto ascoltatore nel ListFragment

@Override 
public void onListItemClick(ListView list, View view, int position, long id) { 
    iItemClickListener.onListFragmentItemClick(view, position); 
} 

Come posso risolvere questo problema?

risposta

8

Basta aggiungere android:clickable="true" al secondo Fragment o FrameLayout nel SlidingPaneLayout.

+0

solo per aggiungere un po 'più di informazioni, l'androide: cliccabile = "true" deve essere aggiunto alla disposizione del secondo frammento, e non (come ho pensato inizialmente) al nodo del secondo frammento nel layout principale – fedepaol

0

Ho lo stesso problema, penso che sia una combinazione di "v4" versione di Fragment e ListFragment e SlidingPanelLayout ... Se si modifica l'importazione da "v4" per importare normale "android.app.ListFragment; " e "importa android.app.Fragment;" tutto funziona.

Ci dispiace per il mio inglese;)

2

Il locutus era corretto. Qualunque sia il frammento in alto, aggiungere la proprietà

android:clickable="true" 

in modo da non passare l'evento click al frammento di seguito.

Grazie a tutti per aver risparmiato tempo. Ecco il mio codice. Ho usato un layout sovrascritto ma funziona anche su un normale pannello scorrevole. guarda il 2 ° frammento, ho aggiunto la proprietà true cliccabile.

<com.ironone.streaming.application.MySlidingPaneLayout 
     android:id="@+id/pane" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <FrameLayout 
      android:id="@+id/pane1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <FrameLayout 
      android:id="@+id/pane2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="true" /> 
    </com.ironone.streaming.application.MySlidingPaneLayout>