今天在做 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 模式有些不一样的地方,稍后几天会将该项目详细思路写下来,欢迎大家关注我,以便能及时看到文章。
如果觉得这篇文章对你有帮助,希望各位能够点一个关注或者喜欢。
关于我:
- github : chengHeaven
- 简书: 月色丶 Heaven
- 邮箱: chen464994292@163.com / heavencheng1916@gmail.com