Android中Woxblom DragListView默认显示第三列实现求助
解决DragListView默认滚动到指定列的问题
问题说明
使用Woxblom的DragListView库,在创建完所有列后希望默认显示第三列,调用scrollToColumn(2, true)并未生效。
尝试的代码
private fun resetBoard( oldColumn: Int, oldRow: Int, newColumn: Int, isDraggable: Boolean, ) { binding.boardView.clearBoard() binding.boardView.setCustomDragItem(MyDragItem(activity, R.layout.column_item)) binding.boardView.setCustomColumnDragItem(MyDragItem(activity, R.layout.column_drag_layout)) if (isDraggable) { if (mDraftItemArray.size > oldRow) { if (oldRow == 0) { mDraftItemArray[oldRow].second.topMargin = true } else if (!mDraftItemArray[oldRow].second.itemIdSort.equals( mDraftItemArray[oldRow - 1].second.itemIdSort, true ) ) { mDraftItemArray[oldRow].second.topMargin = true } } if (newColumn == ColumnStatus.Inprogress.column || oldColumn == ColumnStatus.Todo.column) { updateRowItems(mToDoItemArray) } if (newColumn == ColumnStatus.Inprogress.column || oldColumn == ColumnStatus.Inprogress.column) { updateRowItems(mInProgressItemArray) } if (newColumn == ColumnStatus.ForApproval.column || oldColumn == ColumnStatus.ForApproval.column) { updateRowItems(mForApprovalItemArray) } if (newColumn == ColumnStatus.Completed.column || oldColumn == ColumnStatus.Completed.column) { updateRowItems(mCompletedItemArray) } } addColumn(mDraftItemArray) addColumn(mToDoItemArray) addColumn(mInProgressItemArray) addColumn(mForApprovalItemArray) addColumn(mCompletedItemArray) binding.boardView.scrollToColumn(2,true) }
解决方法
延迟执行滚动操作
直接调用scrollToColumn可能因UI未完成列渲染导致失效,通过post方法延迟执行,确保列已完全加载:binding.boardView.post { binding.boardView.scrollToColumn(2, true) }触发UI刷新后再滚动
若延迟执行仍无效,先强制刷新UI再执行滚动:binding.boardView.requestLayout() binding.boardView.post { binding.boardView.scrollToColumn(2, true) }确认列索引与库版本
你添加列的顺序是Draft、Todo、InProgress、ForApproval、Completed,第三列索引确实为2,这部分无问题。若上述方法都无效,尝试升级DragListView库到最新版本,避免旧版本的方法bug。
内容的提问来源于stack exchange,提问作者Ayaz Muhammad
相关产品推荐
相关产品推荐

