RecyclerView:根据屏幕方向使用不同的LayoutManagers和项目结构

时间:2016-09-15 20:55:18

标签: android android-recyclerview

我正在使用recyclerview,它应该使用不同的元素定位(横向网格和纵向列表),项目结构不同.xml

对于第一部分,我在onCreateView()方法中看到了简单方向检查的解决方案:

 switch (getResources().getConfiguration().orientation) {
            case 1:
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                break;
            case 2:
                recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2));
                break;
        }

但对于第二部分,我有疑问。最简单的方法是将LayoutManager作为构造函数参数传递给Adapter,并使用onCreateViewHolder()运算符检查instanceof中的布局。但它看起来并不那么好   或正确的解决方案

那么,这种情况有没有共同的模式或更好的方式?

2 个答案:

答案 0 :(得分:4)

要根据屏幕方向提供不同的布局资源文件,您可以创建名为layout-land(landscape)和layout-port(portrait)的资源文件夹,系统会自动处理其余文件夹。 一个tipp:你不需要两个文件夹。如果您的默认方向是纵向,则只需为横向模式创建layout-land文件夹。布局资源文件必须具有相同的名称!

答案 1 :(得分:1)

您应该为要支持的每种屏幕尺寸创建一个具有不同布局的文件夹。有关详细信息,请参阅Supporting Multiple Screens。请特别注意后缀以指定屏幕大小和方向。