Android 折叠屏问题解决 - 展开后布局未撑开

时间:2024-12-20 15:39:55

一、说明

正常情况下手机展开折叠时页面会销毁重建,但可以通过参数设置禁止销毁重建。

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

搞定!