2017-05-25 6 views
0

ビューをランドスケープに回転すると、RecyclerViewは2列から3列に切り替わりません。私もそれをリフレッシュするために取得するためにこれらの行を試してみました電話機を回転させたとき、RecyclerViewは2列から3列に変更されません。

mGLManager.setSpanCount(3); 

mGLManager = (GridLayoutManager)mRecyclerView.getLayoutManager(); 
mGLManager.setSpanCount(2); 
mRecyclerView.setLayoutManager(mGLManager); 

mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 

mRecyclerView.refreshDrawableState(); 

mAdapter.notifyDataSetChanged(); 

mRecyclerView.invalidate(); 

mRecyclerView.requestLayout(); 

mRecyclerView.swapAdapter(mRecyclerView.getAdapter(), true); 
mRecyclerView.scrollBy(0,0); 

はここに私の現在のコードである私は、このコードを試してみました。

public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     // set the number of columns based on the orientation 
     if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 2)); 
      mRecyclerView.invalidate(); 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
     } else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 
      mRecyclerView.invalidate(); 
      Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
     } 
    } 

トーストは、向きを反転するとコードが実行されることを示しています。ご協力いただきありがとうございます!

答えて

1

それは姿勢の変化

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){ 
mRecycler.setLayoutManager(new GridLayoutManager(MainActivity.this, 2)); 
} 
else{ 
mRecycler.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 
    } 
+0

のたびに呼び出される活動のあなたのonCreateViewメソッド内の追加は、あなたの答えをいただき、ありがとうございます。 ifブロックでラップする必要がありました: if(mGLManager!= null){ //あなたのコード - ありがとう! } さらに、電話が回転するたびにonCreateメソッドが実行されるので、onCreateメソッドも更新する必要がありました。 ご協力いただきありがとうございます。 – Birdman

関連する問題