2012-05-07 6 views
4

基本的には、2x4グリッドに分割する必要があります。各セクションのサイズは同じです(つまり、各行は画面の高さの25%になります。画面の幅の50%)。Androidでグリッドのようなレイアウトを作成する

私のアプローチは、ウェイトが0.5の2つの内部LinearLayoutを使用して水平LinearLayoutを使用し、次にそれぞれのLinearLayoutsで、子のウェイトを0.25に設定して、それぞれが画面の25%を占めるようにしました。

これが動作しているようですが、これは明らかに、パフォーマンスのために非常に悪いです

(なぜWhy are nested weights bad for performance? Alternatives?理由でこのスレッドを参照)、これを達成するためのいずれかの選択肢がありますか?私は周り見ているが、私はこれに純粋なXMLソリューションを見つけることができません。

は、私はあなたがGridLayoutにスピンを与えたいと思うかもしれませんLinearLayoutsと子供たちのセットアップ

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:baselineAligned="false" 
    android:weightSum="1.0" 
    > 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.5" 
     android:weightSum="1.0">   
      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.5" 
     android:weightSum="1.0">   
      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:src="@drawable/example" 
       android:layout_gravity="center_horizontal" 
       android:layout_weight="0.25" 
      /> 
    </LinearLayout> 
</LinearLayout> 

答えて

4

を持っているかのコード例の下を参照してください。

libraryもあり、1.6以上のデバイスで使用できるようになりました。

+0

私はこれを試してみましょう、ありがとう:) – rastating

関連する問題