5

ListViewをセカンダリ ビューとして使用していSlidingPaneLayoutます。メイン ビューはマップ フラグメントです。はListViewメニューとして機能します。問題はonItemClickedListener、ListView で呼び出されないことです。リスト行でさえ、プレス時に強調表示されることはありません。ListView がフォーカスを取得できないようです。

編集:実際にslidingPaneLayout.findFocus()は、android.widget.ListView. リスト項目をクリックしてもまだうまくいきません。

ここに私のxmlがあります

<com.ziz.luke.custom_components.MySlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/slidingpanelayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/contactsList"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#00000000" >
    </ListView>

    <TextView
        android:id="@+id/android:empty"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center_horizontal|center_vertical"
        android:text="@string/noContacts" />
</RelativeLayout>

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />
</com.ziz.luke.custom_components.MySlidingPaneLayout>

どうすればこれを解決できますか??

4

4 に答える 4

6

私は答えを見つけました。SlidingPaneLayoutオーバーライドしているサブクラスを使用していました

onInterceptTouchEvent(MotionEvent arg0)

私は次のことをしようとしていました:

  • ボタンを使用してslidePaneLayoutを開きます。
  • ボタンを使用してslidePaneLayoutを閉じます。
  • スワイプを使用してslidePaneLayoutを閉じます。
  • ユーザーがスワイプを使用してslidePaneLayoutを開くのを防ぎます。

そこで、オーバーライドされたメソッドから返される shouldSwipe というサブクラス内にブール値を作成しました。

問題を引き起こした実装は次のとおりです。

@Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {

        return shouldSwipe;
    }

タッチイベントが既に消費されていることをシステムに伝え、それが伝播されないようにするため、いつでも(shouldSwipe = true)問題を引き起こしました。

私はこれを使用してそれを解決しました:

@Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        // TODO Auto-generated method stub
        return shouldSwipe ?super.onInterceptTouchEvent(arg0):shouldSwipe;
    }

それでおしまい。

于 2013-06-19T00:08:04.943 に答える
3

単なる提案ですが、Navigation List Drawer に NavigationDrawer を使用する方が、車輪を再発明するよりも簡単でしょう。

http://developer.android.com/design/patterns/navigation-drawer.html

于 2013-06-24T16:10:55.773 に答える