0

我有一个水平回收视图,它实现了用于拖动和重新排序单元格的 ItemTouchHelper 回调。当一个单元格被移动时,我想缩小所有单元格的宽度,以便它们都出现在屏幕上。在 onItemSelected() 中,我可以成功更改当前正在移动的单元格的大小,并在 onItemClear 中恢复。

但是,我想调整所有单元格的大小,而不仅仅是当前单元格。最好的方法是什么?

我尝试在我的适配器类中创建一个函数并通过 notifyDataSetChanged() 调用它来调整大小,但是它正在删除当前正在移动的单元格。

作为我的 ItemTouchHelperCallback 的一部分,有没有办法做到这一点 - 创建与 onItemSelected 类似的函数但更新所有其他单元格?

4

1 回答 1

0

我不确定我是否完全理解您要做什么,但我认为这可能会有所帮助:


        int childs = recyclerView.getChildCount();
        for (int i = 0; i < childs; i++) {
            View child = recyclerView.getChildAt(i);
            if (child != null) {
                RecyclerView.ViewHolder vholder = recyclerView.getChildViewHolder(child);
                if (vholder != null) {
                    ViewHolder holder = (ViewHolder) vholder;
                    if (holder.view != null) {
                        LayoutParams params = (LayoutParams)holder.view.getLayoutParams();
                        params.width = <new_width>;
                        params.height = <new_height>;
                        holder.view.setLayoutParams(params);
                    }
                }
            }
        }

快乐编码!

于 2019-05-15T14:13:09.080 回答