私は航空会社予約システムのような予約エンジンAndroidアプリに取り組んでいます。乗客の検索に固有の利用可能なすべての航空会社のコンテンツを取得するには、モバイルの画面に表示されます。
画面の読み込み時間、システムメモリの消費量、追加機能を考慮して、テーブルレイアウトとグリッドレイアウトのどちらが効果的ですか?
**編集:この行はこの回答が書かれた時点では正しかったが、すべてのAndroidデバイス:There is no GridLayout in the Android API.
**
(注:APIレベル14の時点で、最終的にGridLayoutがあります。以下の回答を参照してください。さらに、V7サポートライブラリは、GridLayoutサポートをAPI 7まで追加します。しかし、この回答のGridViewはっきり言ってください。)
GridViewを意味する場合、TableLayoutとGridViewは完全異なるものです。
GridViewは基本的にListViewに似ていますが、その項目は厳密なグリッドに配置されています。これはアダプターに接続されており、ユーザーがスクロールしてアダプターからビューを取得します。グリッド内のすべての要素mustは同じサイズです。ユーザーは各アイテムを介して表示セレクターを移動できます。GridLayoutの目的は、アダプターからのデータを表示し、ユーザーが表示された各アイテムをナビゲートして選択できるようにすることです。 ListViewとの唯一の違いは、アイテムが垂直リストではなくグリッドに配置されることです。
TableLayoutは単なるHTMLのテーブルに似たレイアウトマネージャーです。それ自体はスクロールを行いません。スクロールするものを作成するには、TableLayoutをScrollViewに配置する必要があります。これは、表示するすべてのデータを事前にTableLayoutに入力する必要があることを意味するため、ScrollViewはスクロールする総スペースを認識します。また、「アイテム」ごとの選択または対話を直接提供しません。 TableLayoutにはアイテムがなく、単なるレイアウトマネージャーです。
あなたは、実際にあなたが実際に何をしようとしているかについて十分な有用な情報を提供しませんでした。それはあなたが特に望むものに大きく依存します。
「追加機能」の面で何が役立つのか?!?さて、あなたはどんな機能を探していますか!
とにかく、一般的な規則として、ユーザーがスクロールしている大量のデータがある状況では、アダプターベースのビューを使用する必要があります。これらは、データを表示するために事前にビュー階層全体を作成するよりもはるかに効率的です。また、アイテムごとの選択やその他の機能を自動的に提供する唯一のものです。 GridViewも使用できますが、アプリケーションが使用する主なビューはListViewです。
Android 4.0であるため、 GridLayout のようなものがあります。GridLayoutは、TableLayoutよりも常に望ましいです。レイアウトも。
それはかなりクールなようで、GoogleはLinearLayoutと同じくらい人気があることを望んでいるようです(Android 4.0)のビデオによると)。
編集:多数のアイテムを表示する必要がある場合は、GridLayoutManagerでRecyclerViewを使用することを検討してください。これは、メモリとCPUの使用率の面で役立ちます。
GridLayoutは行と列の両方のスパニングをサポートするため、TableLayout構成は通常、簡単に対応できます。 TableRowsは、GridLayoutで必要ないため、削除できます。同じUIの場合、GridLayoutはTableLayoutよりも一般的に高速であり、メモリ消費も少なくなります。
TableLayoutはすべてのAndroidバージョンでサポートされていますが、GridLayoutではレベル11(Android ICS 4.0)以上が必要ですが、librarry v7のサポートを通じて簡単に追加できます。サポートレベル7(Android 2.1)以上
これは、GridLayoutの素晴らしいプレゼンテーションであり、TableLayoutとの比較の違いについても概説しています。 http://blog.stylingandroid.com/archives/669
ただし、最も重要な違いの1つは、ICS(アイスクリームサンドイッチ)以降でのみ利用可能です。これは現在、30%未満の 市場シェア ほとんどの開発者にとっての答えは、GridLayoutを使用する前に数年待つことです。
GridView
はビューリサイクルとAbsListView
から継承されたもので実装されているため、より適切に動作するはずです。 GridView
はAdapter
と共に使用する必要があるため、展開がより困難ですが、画像などのロードするビューが大量にある場合は効率的に機能します
グリッドレイアウトでは、numcolumns = "autofit"を取得することにより、コンポーネントをビューに自動的に設定できます。ここでは、必要な行と列の数を設定する必要はありませんが、テーブルレイアウトでは、そのような種類のオプションはなく、必要な行と列の数を設定する必要があります。テーブルレイアウトでは、相対レイアウトを使用せずに1行に複数のアイテムを挿入できません