我在SwipeRefreshLayout中使用DragSortListView(https://github.com/bauerca/drag-sort-listview)使其能够“拉到刷新”和可拖动列表视图。这里是我的XML:DragSortListView不能在SwipeRefreshLayout上拖动
<android.support.v4.widget.SwipeRefreshLayout
android:layout_below="@id/div_subtitle"
android:id="@+id/srl_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobeta.android.dslv.DragSortListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
dslv:drag_enabled="true"
dslv:track_drag_sort="false"
android:divider="@null"
dslv:use_default_controller="false"
tools:listitem="@layout/list_kkategori" />
</android.support.v4.widget.SwipeRefreshLayout>
这是我的列表视图元素的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:paddingRight="@dimen/right_margin"
android:paddingLeft="@dimen/left_margin"
android:background="@color/background"
android:layout_height="50dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/container_side_dropshadow">
<ImageView
android:id="@+id/iv_handler"
android:layout_width="50dp"
android:scaleType="fitXY"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@drawable/draghandler" />
<TextView
android:id="@+id/tv_nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/textBlack"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/iv_handler"
android:text="Nama Kategori"
android:textSize="17sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_alignParentBottom="true"
android:background="@color/dividerColor"
android:layout_marginLeft="@dimen/left_divider_margin"
android:layout_marginRight="@dimen/right_divider_margin" />
</RelativeLayout>
</RelativeLayout>
这是我DragSortListView intialization,我在我的我的片段onCreateView
拨打:
dslv = (DragSortListView) v.findViewById(android.R.id.list);
dslv.addHeaderView(View.inflate(getActivity(), R.layout.list_header, null), null, false);
dslv.addFooterView(View.inflate(getActivity(), R.layout.list_footer, null), null, false);
dslvController = new DragSortController(dslv);
dslvController.setDragHandleId(R.id.iv_handler);
dslvController.setRemoveEnabled(false);
dslvController.setSortEnabled(true);
dslvController.setDragInitMode(DragSortController.ON_DOWN);
dslvController.setRemoveMode(DragSortController.FLING_REMOVE);
dslv.setFloatViewManager(dslvController);
dslv.setOnTouchListener(dslvController);
dslv.setDragEnabled(true);
然而,不知何故DragSortListView不能拖拽任何列表项,但拖拽功能仍然有效。我怀疑拖动列表元素时DragSortListView中的onTouchListener
以某种方式被SwipeRefreshLayout的onTouchListener
覆盖。
有没有解决方法或解决此问题的方法?我需要在我的应用程序中的功能,刷新到刷新和拖动列表视图。
要添加到此,您可以修改DragSortListView类并为mDragState创建一个getter。然后,在'canChildScrollUp()'方法中,您可以检查如下内容:'((DragSortListView)mTarget).getDragState()!= DragSortListView.IDLE',当您不拖动时始终显示滑动刷新操作。这样你就不必依赖'isDragEnabled()'方法。 – 2015-02-06 14:47:43