Backlight87
11/7/2017 - 7:01 AM

RecycleView+隐藏itemview(view.gone)后还是有一定的占位

解决 RecyclerView 隐藏整个 Item 后, 该 Item 还会占位的问题


原因:
一般在 Item 的根布局中会设置marginTop 或者 marginBottom,因此不能解决这个问题,所以我们的view.gone还是会占位
解决代码:

class ViewHolder extends RecyclerView.ViewHolder {

    ViewHolder(View itemView) {
        super(itemView);
    }

    public void setVisibility(boolean visible) {
        RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();
        if (visible) {
            param.height = LinearLayout.LayoutParams.WRAP_CONTENT;
            param.width = LinearLayout.LayoutParams.MATCH_PARENT;
            itemView.setVisibility(View.VISIBLE);
        } else {
            itemView.setVisibility(View.GONE);
            param.height = 0;
            param.width = 0;
        }
        itemView.setLayoutParams(param);
    }
}