5 votes

Événements de clic sur le SlidingPaneLayout

J'essaie d'utiliser le SlidingPaneLayout. La vue de gauche est un ListFragment et la vue de droite est une vue détaillée. La disposition s'affiche correctement et je peux la faire glisser. Mais si la vue détaillée se trouve devant la liste et que je clique dessus, la liste en arrière-plan reçoit le clic.

Ma mise en page ressemble à ceci :

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

J'utilise ce code pour configurer l'écouteur de clic dans le ListFragment.

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

Comment puis-je résoudre ce problème ?

10voto

Locutus Points 2306

Il suffit d'ajouter android:clickable="true" au deuxième Fragment o FrameLayout en el SlidingPaneLayout .

3voto

SurenSaluka Points 752

Locutus avait raison. Quel que soit le fragment en haut, ajoutez la propriété

android:clickable="true"

afin qu'il ne transmette pas l'événement de clic au fragment ci-dessous.

Merci à tous de m'avoir fait gagner du temps. Voici mon code. J'ai utilisé une mise en page surchargée mais cela fonctionne également avec une mise en page normale de volet coulissant. Regardez le 2ème fragment, j'ai ajouté la propriété clickable true.

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

0voto

crc_error Points 552

J'ai le même problème, je pense que c'est une combinaison de la version "v4" de Fragment et ListFragment et du SlidingPanelLayout... Si vous changez l'import de "v4" en import normal "Android.app.ListFragment ;" et "import Android.app.Fragment ;" tout fonctionne.

Désolé pour mon anglais ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X