2012-05-07 42 views
4

基本上,我有一個視圖,需要將其拆分爲2x4網格,每個網格的大小相等(即每行將爲屏幕高度的25%,每列將會是屏幕寬度的50%)。在Android中創建類似佈局的網格

我的方法是使用水平LinearLayout和兩個內部LinearLayout,權重爲0.5,然後在每個LinearLayouts中將子項的權重設置爲0.25,以使每個子項佔用屏幕的25%。

儘管這似乎工作,這是很明顯的表現非常糟糕(見本線程一個原因Why are nested weights bad for performance? Alternatives?

是否有任何替代實現這一目標?我看了一下,但我找不到一個純粹的XML解決方案。

請參見下面的我怎麼有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> 

回答