2013-08-12 2 views
5

Я пытаюсь использовать SlidingPaneLayout. Левое представление - это ListFragment, а правый вид - это подробный вид. Макет отображается правильно, и я могу сдвинуть его. Но если подробный вид находится перед списком, и я нажимаю на него, список в фоновом режиме получает щелчок.Нажмите события на SlidingPaneLayout

Моя раскладка выглядит следующим образом:

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

Я использую этот код для создания щелчка слушателя в ListFragment

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

Как я могу решить эту проблему?

ответ

8

Просто добавьте android:clickable="true" ко второму Fragment или FrameLayout в SlidingPaneLayout.

+0

Просто, чтобы добавить немного больше информации, андроид: кликабельны = «истина» должна быть добавлена ​​к компоновке второго фрагмента, а не (как я сначала думал) к узлу второго фрагмента в основной раскладке – fedepaol

0

У меня такая же проблема, я думаю, что это комбинация «v4» версии Fragment и ListFragment и SlidingPanelLayout ... Если вы изменили импорт из «v4», чтобы импортировать обычный «android.app.ListFragment; " и "import android.app.Fragment;" все работает.

Извините за мой английский;)

2

Locutus был верным. Независимо фрагмент на вершине, добавьте свойство

android:clickable="true" 

поэтому он не будет проходить событие щелчка по указанному ниже фрагменту.

Спасибо всем, что сэкономил время. Вот мой код. Я использовал переопределенный макет, но это работает и на обычном макете раздвижных панелей. Посмотрите на второй фрагмент, я добавил свойство 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> 
Смежные вопросы