2016-09-15 64 views
1

我正在使用recyclerview,它應該使用不同的元素定位(網格用於橫向和列表用於縱向),具有不同的.xml結構用於項目。RecyclerView:使用不同的佈局管理器和基於屏幕方向的項目結構

因爲我看到在簡單的定位解決方案onCreateView()檢查方法第一部分:

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

但對於第二部分我有疑惑。最簡單的方法是將LayoutManager作爲構造函數參數傳遞給Adapter,並使用instanceof運算符檢查onCreateViewHolder()中的佈局。但它看起來不是很好 或正確的解決方案。

那麼,對於這種情況,是否有任何常見的模式或更好的方法?

回答

2

要根據屏幕方向提供不同的佈局資源文件,可以創建名爲layout-land(橫向)和layout-port(縱向)的資源文件夾,系統會自動處理剩餘的文件。 A tipp:你不需要兩個文件夾。如果您的默認方向是縱向,那麼只需爲橫向模式創建佈局文件夾。佈局資源文件必須具有相同的名稱!

+0

如果我爲縱向和橫向創建兩種不同的佈局,系統將自動選擇需要的佈局。但是我怎樣才能設置Recyclerview的LayoutManager?我需要它在縱向和橫向上有所不同。 – jlively

+1

試試Autumn_Cat在原始文章中做了些什麼。看起來很好 – anstaendig

1

您應該創建一個文件夾,其中包含您希望支持的每種屏幕大小的不同佈局。有關更多詳細信息,請參閱Supporting Multiple Screens。請特別注意後綴以指定屏幕大小和方向。