Android 开发Android开发程序员

解决 RecyclerView 隐藏整个 Item 后, 该 I

2017-09-05  本文已影响259人  月色丶Heaven

今天在做 Heaven 项目时遇到的一个问题,在网上搜了一下,参考文章很少只提供了下面这个在 ViewHolder 中重新设置 Item 的宽高的方法,一般在 Item 的根布局中会设置marginTop 或者 marginBottom,因此不能解决这个问题,就写下来给大家一个解决方案。

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);
    }
}

如果 Item 根布局中有使用 marginTop 或者 layout_marginBottom,还是会存在间隔;
如果要使用 marginTop 或者 layout_marginBottom, 需要修改为 paddingTop / paddingBottom

Heaven 项目是将开源项目 CloudReader 从 Retrofit + RxJava + MVVM + databinding 模式改成 MVP+Dagger2+Retrofit+RxJava 架构的项目

  Heaven 项目已上传至 github:https://github.com/chengHeaven/Heaven
  该项目的 MVP 模式与其他的 MVP 模式有些不一样的地方,稍后几天会将该项目详细思路写下来,欢迎大家关注我,以便能及时看到文章。

  如果觉得这篇文章对你有帮助,希望各位能够点一个关注或者喜欢。

关于我:

上一篇下一篇

猜你喜欢

热点阅读