一、说明
正常情况下手机展开折叠时页面会销毁重建,但可以通过参数设置禁止销毁重建。
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize"
但设定完后发现 RecyclerView 中的 item 没有重新按照新的尺寸进行改变,比如折叠时是较窄的,展开后还是窄的。
二、解决方案
当页面重新创建时强制重新创建 adapter。
public class MineFragment extends Fragment
private MineAdapter adapter;
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (adapter != null) {
adapter.forceUpdate();
}
}
}
public class MineAdapter extends RecyclerView.Adapter<MyHolder> {
private List<Entity> entities;
public void forceUpdate() {
if (EmptyUtils.isNotEmpty(entities)) {
entities = new ArrayList<>(entities);
notifyDataSetChanged();
}
}
}
搞定!