2013-08-12 14 views
5

Próbuję użyć SlidingPaneLayout. Lewy widok to ListFragment, a prawy widok to widok szczegółowy. Układ jest wyświetlany poprawnie i mogę go przesuwać. Ale jeśli widok szczegółów znajduje się przed listą i klikam na nią, lista w tle otrzymuje kliknięcie.Kliknij zdarzenia na SlidingPaneLayout

Mój układ wygląda następująco:

<?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> 

Używam tego kodu do konfigurowania kliknij słuchacza w ListFragment

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

Jak mogę rozwiązać ten problem?

Odpowiedz

8

Wystarczy dodać android:clickable="true" do drugiego Fragment lub FrameLayout w SlidingPaneLayout.

+0

Wystarczy dodać trochę więcej informacji, android: klikalne = „true” musi być dodany do drugiego fragmentu w układzie, a nie (jak myślałem początkowo) do węzła Drugi fragment jest do głównego układu – fedepaol

0

Mam ten sam problem, myślę, że jest to kombinacja "v4" wersji Fragment i ListFragment i SlidingPanelLayout ... Jeśli zmienisz import z "v4", aby zaimportować normalne "android.app.ListFragment; " i "importować Android.app.Fragment;" wszystko działa poprawnie.

Przepraszam za mój angielski;)

2

Locutus był poprawny. Cokolwiek fragment na górze, dodać właściwość

android:clickable="true" 

więc nie przejdzie zdarzenie click z poniższym fragmentem.

Dziękuję wszystkim za oszczędność czasu. Oto mój kod. Użyłem przesłoniętego układu, ale działa to również na zwykłym układzie paneli przesuwnych. spójrz na drugi fragment, dodałem klikalną prawdziwą właściwość.

<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> 
Powiązane problemy