动态修改RecyclerView的高度,限制显示item数目
问题
最近突然遇到一个很奇怪的需求,设计需要将列表的数目最大固定为三个半,小于三个半的时候自适应,找了找属性好像没发现这样的。
解决办法
后面就想了想,动态的更改了RecyclerView布局,试了下好像没什么问题,最后将这样的更改和notify函数写在了一起,用起来也挺方便,性能的话就不知道了。
public void notifyWithLimitItemNumb(int limitNumb, int dpHeight, RecyclerView rv) {
ViewGroup.LayoutParams params = rv.getLayoutParams();
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
if (getData().size() < limitNumb) {
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
}else {
params.height = DisplayUtil.dp2px(dpHeight) * limitNumb;
}
rv.setLayoutParams(params);
notifyDataSetChanged();
}
附上dp和px的转换功能
public static int dp2px(int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
}