2015-04-08 35 views

回答

0

您既可以使用简单易用但只能从api 14获得的GridView,也可以将n个LinearLayouts放置在每个n个LinearLayouts中,您可以在任何api中执行。

这是我为nXn布局应该工作的示例(只需将big_layout替换为您要连接的视图)。

public void createNxNLayouts(int n,int width,int height){ 
    LinearLayout[] main_layouts = new LinearLayout[n]; 
    for(int i=0;i<main_layouts.length;i++){ 
     main_layouts[i] = new LinearLayout(this); 
     main_layouts[i].setOrientation(LinearLayout.HORIZONTAL); 
     main_layouts[i].setLayoutParams(new LinearLayout.LayoutParams(width,height/n)); 
     bigLayout.addView(main_layouts[i]); 
    } 
    LinearLayout[][] secondary_layouts = new LinearLayout[n][n]; 

    for(int i=0;i<secondary_layouts.length;i++){ 
     for(int j=0;j<secondary_layouts[i].length;j++){ 
      secondary_layouts[i][j] = new LinearLayout(this); 
      secondary_layouts[i][j].setOrientation(LinearLayout.HORIZONTAL); 
      secondary_layouts[i][j].setLayoutParams(new LinearLayout.LayoutParams(width/n,height/n)); 
      main_layouts[i].addView(secondary_layouts[i][j]); 
     } 
    } 
} 
+0

我在想它,但我不知道该怎么做,每个线性布局的内部视图如何具有正确的宽度和高度等等......您是否有一些示例? –

+0

这里我添加了一个样本 –

+0

我可以在宽度和高度上传递什么? –

0

GridView似乎是最好的选择。即使在运行期间项目的数量发生变化,它也能正常工作。

但是,如果要避免使用GridView,请使用RelativeLayout作为父级,并使用LEFT_OFFBELOW类似的属性将子布局的视图定位为网格。

由于嵌套的视图可能不好,因此RelativeLayout会比LinearLayout的层次更好。 (Ref