RecyclerView

RecyclerView

1.使用网格布局时的注意事项

Recyclerview使用网格布局时,子项中的宽度应设置为match_parent,不能设置为wrap_content,否则会出现左右边距不同,整体偏向左侧的情况;

RecyclerView中有多种类型时,可以通过GridLayoutManager来指定不同类型item的展示区域大小

/**
 * SPAN_COUNT表示的是将屏幕宽度均分的数量
 */
GridLayoutManager mLayoutManager = new GridLayoutManager(getContext(), SPAN_COUNT);

mLayoutManager.setSpanSizeLookUp(new GridLayoutManager.SpanSizeLookUp()
{
    @Override
    public int getSpanSize(int position)
    {
        ...
        //返回值代表position位置的item占屏幕宽度的份数(最大为SPAN_COUNT)
        //返回值为SPAN_COUNT表示该item占满屏幕宽度
    }
}
2.动态设置RecyclerView中item的间距
mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration()
{
    @Override
    public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent)
    {
        super.getItemOffsets(outRect, itemPosition, parent);
        
        //以下单位均为px
        outRect.left = xxx;  //item左侧的间距
        
        outRect.top = xxx;   //item顶部的间距
        
        outRect.right = xxx;    //item右侧的间距
        
        outRect.bottom = xxx;   //item底部的间距
    }
}
3.通过ItemTouchHelper类来实现RecyclerView中item的拖拽、侧滑等动作

使用ItemTouchHelper类实现recyclerview中元素的拖拽、侧滑等动作;
其中,触摸相应的方向,包含两个方面:swipeFlags(侧滑)、dragFlags(拖拽);
核心函数:makeMovementFlags(dragFlags,swipeFlags);
若只需要实现拖拽,无需侧滑效果,则将不需要的参数设置为0:
makeMovementFlags(dragFlags,0);

4.RecyclerView.canScrollHorizontally(int direction) | RecyclerView.canScrollVertically(int direction)

返回值表示RecyclerView在指定的方向上是否可滑动的;

参数direction为正数时表示向左 | 上移动(朝X | Y轴的正方向移动),参数为负数时表示向右/下移动(朝X | Y轴的
负方向移动)

posted @ 2020-04-08 17:48  Ricardoldc  阅读(160)  评论(0编辑  收藏  举报