画面の向きに応じてGridViewの列数を変えるには

GridViewはアイテムを表のように並べることのできるビューです。

一画面に多くのアイテムを表示できるのでListViewなどに比べてスペースを最大限に活用することができます。

また、UI的にもおしゃれなレイアウトにすることが可能です。

そんなGridViewですが、画面の向きに応じて列数を変えることも可能です。

ここではその方法を紹介します。


列数を変えるには

グリッドビューの列数を変えるにはsetNumColumnsメソッドを使います。

gridView.setNumColumns(3);

上記のようにするとグリッドビューの列数は3列になります。

これで列数を変更できますが、画面の向きに合わせて動的に列数を変えるには少し工夫が必要です。


動的に列数を変更するには

では、どうやって動的にグリッドビューの列数を変化させるかというとActivity内で次のようなコードを書きます。

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    switch (newConfig.orientation) {
    case Configuration.ORIENTATION_PORTRAIT:  // 縦長
        gridView.setNumColumns(2);
        break;
    case Configuration.ORIENTATION_LANDSCAPE:  // 横長
        gridView.setNumColumns(3);
        break;
    default:
        break;
    }
    
    super.onConfigurationChanged(newConfig);
}

画面向きなどが変わるとonConfigurationChangedメソッドが呼び出されるので、それをオーバーライドして列数を変化させています。

注意 : これをオーバーライドするActivityにはAndroidManifestでandroid:configChanges="orientation|screenSize"を設定してください。

この例では縦長の時に列数を2列に、横長なら3列にしていますが、あくまでこれは例なので画面サイズに合った列数にするのがいいと思います。

以上、画面向きに応じてGridViewの列数を変化させる方法でした。では、また。

関連項目
プライバシーポリシー