5

ListView在我的 . 中使用 a 作为辅助视图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)

我试图做以下事情:

  • 使用按钮打开slidingPaneLayout。
  • 使用按钮关闭slidingPaneLayout。
  • 使用滑动关闭slidingPaneLayout。
  • 防止用户使用滑动打开slidingPaneLayout。

因此,我在我的子类中创建了一个名为 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

我刚刚使用 SlidingPaneLayout 创建了一个示例项目。

我没有使用任何地图,因为没有问题出在哪里,所以我只是用一个TextView来参考地图的位置。我确实使用了一个正在工作并接收点击监听器的 ListFragment。请从这里下载项目:

https://dl.dropboxusercontent.com/u/33565803/StackOverFlowExamples/SlidingPaneLayoutExample.zip

如果您有任何配置问题以及是否解决了您的问题,请告诉我;)

(我使用 actionBarSherlock 只是因为我习惯了,所以如果你愿意,你可以删除它)

于 2013-06-18T23:43:13.527 回答
3

只是一个建议,但也许将 NavigationDrawer 用于导航列表抽屉会比重新发明轮子更容易。

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

于 2013-06-24T16:10:55.773 回答
0

尝试使用这个强大的库来制作一个简单的滑动条: https ://github.com/jfeinstein10/SlidingMenu

以下是如何导入和使用它:已 解决:如何使用 ActionBarSherlock 4.2.0 在我的项目中导入 SlidingMenu

于 2013-06-24T18:00:52.943 回答