2016-09-15 14 views
1

私はrecyclerviewと別の要素の位置付け(横向きのグリッドと縦長のリスト)を使用して、異なる.xml構造のアイテムを使用しています。RecyclerView:画面の向きに基づいて異なるLayoutManagerとアイテム構造を使用する

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

しかし、第二部のために、私は疑問を持っている:私はonCreateView()方法でチェックする簡単な向きで解決策を参照してください最初の部分については

。最も簡単な方法は、LayoutManagerをコンストラクタパラメータとしてアダプタに渡し、onCreateViewHolder()instanceofオペレータでレイアウトをチェックすることです。しかし、それは良いと思わない または正しい解決策。

だから、このような状況には共通のパターンやより良い方法がありますか?

答えて

2

画面の向きに応じて異なるレイアウトリソースファイルを提供するには、layout-land(landscape)とlayout-port(portrait)という名前のリソースフォルダを作成し、残りを自動的に処理します。 Tipp:両方のフォルダは必要ありません。あなたのデフォルトの向きが縦長の場合は、ランドスケープモード用のレイアウトランドフォルダを作成してください。レイアウトリソースファイルは同じ名前でなければなりません!

+0

ポートレートとランドスケープの2つの異なるレイアウトを作成すると、システムは自動的に必要なレイアウトを選択します。しかし、どのようにしてRecyclerviewのLayoutManagerを設定できますか?私はそれが肖像画で異なっており、風景で異なっている必要があります。 – jlively

+1

元の投稿にAutumn_Catが何をしたかを試してみてください。うまく見える – anstaendig

1

サポートする画面サイズごとに異なるレイアウトのフォルダを作成する必要があります。詳細については、Supporting Multiple Screensを参照してください。画面のサイズと向きを指定するには、接尾辞に特に注意してください。

関連する問題