2012-05-07 23 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> 

回答