Android - 如何动态创建NxN布局,如Tic Tac Toe?

时间:2015-04-08 15:46:22

标签: android layout

如何像tic tac toe一样动态制作布局?

它必须是动态的,因为我想制作3x3正方形,或4x4正方形或nxn正方形。

我认为我需要2 for-loops才能做到这一点,但具体到底是怎么做的?

2 个答案:

答案 0 :(得分:0)

您可以使用简单易用的GridView,但只能从api 14中使用,或者您可以在每个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]);
        }
    }
}

答案 1 :(得分:0)

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

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

RelativeLayout会优于LinearLayout的层次结构,因为视图的嵌套可能很糟糕。 (Ref