改变方向并不是在com.android.support:design:23.2.0中发生的

时间:2016-03-02 10:08:15

标签: android orientation android-recyclerview

在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

1 个答案:

答案 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。