画面全体をカバーするグリッドに配置したい基本的に同一のビューが12あります。デバイスの向きに応じて、3x4 または 4x3 グリッドを使用したいと考えています。
私が理解している限り、このトピックには基本的に 3 つのアプローチがあります。
- 使う
GridView
- ネストされた
LinearLayout
インスタンスを使用する - 使う
TableLayout
そんなレイアウトにしたい
- 向きの変更に自動的に適応します (同様
GridView
に) - 利用可能なすべての画面スペースを使用します (ネストされた
LinearLayout
インスタンスと同様) - スクロールを許可しません(それがないと、「これ以上スクロールできません」という効果がありません
GridView
) - すべてのアイテムを強制的に同じサイズにすることができます
デフォルトでは、 にGridView
はスクロール機能があり、画面いっぱいに表示されませんが、LinearLayout
とTableLayout
は向きの変化に自動的に適応しません。
現在、スクロールを無効GridView
にして、向きとコンテナの高さに応じて項目ビューの最小高さを設定し、画面を強制的に塗りつぶすカスタムアダプタを使用しています。これは機能しますが、本当に醜いハックのように感じます。
LinearLayout
私は試したことはありませんが、方向に応じてネストされたインスタンスを動的に構築することもおそらく機能します。
これは頻繁な目標 ( 1、2、3、4 ) のようですが、提案された解決策はすべて私のものと同じくらいハックであるか、私の要件の一部を満たしていません。
私は Android 開発に慣れていないので、何か不足しているかどうかわかりません。
これを実装する最適な方法は何ですか?
API レベル 8 以上を対象としています。