在myfragment.java中
@Override
public void onConfigurationChanged(Configuration newConfig) {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
if (isScreenChange()) {
recyclerView.setLayoutManager(staggeredGridLayoutManager);
} else {
recyclerView.setLayoutManager(linearLayoutManager);
}
}
public boolean isScreenChange() {
Configuration mConfiguration = getResources().getConfiguration();
Log.i("SCREEN",mConfiguration.toString());
int ori = mConfiguration.orientation;
if (ori == Configuration.ORIENTATION_LANDSCAPE) {
return true;
} else if (ori == Configuration.ORIENTATION_PORTRAIT) {
return false;
}
return false;
}
它适用于编译&com; android.support:design:23.1.1', 但是在com.android.support:design:23.2.0中,无论你旋转什么屏幕, 它始终显示ORIENTATION_PORTRAIT
答案 0 :(得分:0)
支持库23.2.0附带了以下HERE
中提到的RecyclerView中的以下更改此版本为LayoutManager API带来了令人兴奋的新功能: 自动测量!这允许RecyclerView根据自己调整大小 其内容的大小。这意味着以前不可用 场景,例如使用WRAP_CONTENT作为维度 RecyclerView,现在可以。你会发现所有内置的 LayoutManagers现在支持自动测量。
由于此更改,请务必仔细检查布局参数 您的项目视图:以前忽略的布局参数(例如 现在,滚动方向的MATCH_PARENT将得到充分尊重。
如果你有一个自定义的LayoutManager,它不会扩展其中一个 内置在LayoutManagers中,这是一个选择性API - 您将被要求 调用setAutoMeasureEnabled(true)以及进行一些小的更改 在方法的Javadoc中有详细说明。
请注意,尽管RecyclerView会为其子项设置动画,但事实并非如此 动画自己的边界变化。如果你想动画 RecyclerView在更改时绑定,您可以使用Transition API。