我正在使用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
中的布局。但它看起来并不那么好
或正确的解决方案
那么,这种情况有没有共同的模式或更好的方式?
答案 0 :(得分:4)
要根据屏幕方向提供不同的布局资源文件,您可以创建名为layout-land(landscape)和layout-port(portrait)的资源文件夹,系统会自动处理其余文件夹。 一个tipp:你不需要两个文件夹。如果您的默认方向是纵向,则只需为横向模式创建layout-land文件夹。布局资源文件必须具有相同的名称!
答案 1 :(得分:1)
您应该为要支持的每种屏幕尺寸创建一个具有不同布局的文件夹。有关详细信息,请参阅Supporting Multiple Screens。请特别注意后缀以指定屏幕大小和方向。