我有一个由RecyclerView
支持的GridLayoutManager
。 RecyclerView
包含一个CardView
列表,可以在卡片上单击按钮时更改大小。它们布置在2列中,列表垂直滚动。卡片以预期的方式垂直扩展,RecyclerView
的行正确调整大小。但是,当卡片缩小时,会留下空白区域,因为卡片收缩时行没有改变大小以反映较小的内容。当我向下滚动RecyclerView
然后向上滚动时,空白区域消失,一切正常。
我想实现当你向下滚动然后当我的卡在某种类型的监听器中调整大小时所发生的任何行为,以便我可以在需要时触发网格调整大小行为。
我尝试使用StaggeredGridLayoutManager
并不适合我目前的需求,因此我正在研究如何使用GridLayoutManager
显示Recycler视图的片段:
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.card_list_fragment, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
//Turn off the blinking animation when the Realm Refreshes
RecyclerView.ItemAnimator animator = recyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
deviceList = QDKManager.getQDK(getContext().findDevices());
GridLayoutManager manager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(new StaggeredDeviceAdapter(getContext(), deviceList, manager));
recyclerView.setItemViewCacheSize(40);
return view;
}
适配器
public class StaggeredDeviceAdapter extends RealmRecyclerViewAdapter<Bank, StaggeredDeviceViewHolder> {
private RealmResults<Bank> devices;
private Context context;
public StaggeredDeviceAdapter(Context context, RealmResults<Bank> list) {
super(list, true);
this.devices = list;
this.context = context;
}
@Override
public StaggeredDeviceViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(context).inflate(R.layout.device_card, null);
//setHasStableIds(true);
StaggeredDeviceViewHolder holder = new StaggeredDeviceViewHolder(layoutView);
return holder;
}
@Override
public void onBindViewHolder(StaggeredDeviceViewHolder holder, int position) {
holder.setValues(devices.get(position), context);
}
}
插图
最初如何布置卡
1 2
3 4
扩展时卡片的外观如何,“_”是白色空间
1 2
_ 2
3 4
卡片再次缩小时的外观如何
1 2
_ _
3 4
我想删除第一行底部的空白区域,以便卡片像最初一样齐平。
如果您需要任何其他信息或说明,请与我们联系。