Android Studio多个GridLayouts以编程方式

时间:2016-03-07 17:32:10

标签: java android android-gridlayout

我正在研究Android Studio中的一个项目,其中我有许多标签片段,其中包含主要详细视图,在主设备中显示列表,在详细信息中显示单个gridlayout,这些只是在xml布局中布局并且工作完美。对于最终的选项卡详细信息视图,我需要能够呈现多个单独的水平滚动单行和动态列计数网格布局或网格视图,每个都有一个TextView标头,并且必须以编程方式完成,因为它们可能会有所不同,具体取决于主视图列表选择。在使用集合视图的iOS上这很容易,但是我没有找到适用于Android的示例,并且我尝试的每一件事都会导致单个gridlayout,没有TextView标头。任何人都可以提供一个简单的例子(可能有三个网格)吗?

1 个答案:

答案 0 :(得分:0)

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView svv = new ScrollView(this);
    svv.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.WRAP_CONTENT, ScrollView.LayoutParams.WRAP_CONTENT));
    LinearLayout linLayout = new LinearLayout(this);
    linLayout.setOrientation(LinearLayout.VERTICAL);
    LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    int colcount = 20;
    int rowcount = 1;
    TextView tv;
    Button btn;
    GridLayout grd;
    GridLayout.LayoutParams gllop;
    HorizontalScrollView svh;

    for(int i = 0; i < 30; i++) {
    tv= new TextView(this);
    tv.setText("TextView " + i);
    tv.setLayoutParams(lpView);
    linLayout.addView(tv);
    grd = new GridLayout(this);
    grd.setColumnCount(colcount);
    grd.setRowCount(rowcount);
    grd.setBackgroundColor(Color.YELLOW);
        for(int j = 0; j < 20; j++) {
            gllop = new GridLayout.LayoutParams(GridLayout.spec(0), GridLayout.spec(j));
            btn = new Button(this);
            btn.setText("Button " + i +"."+j);
            grd.addView(btn, gllop);
        }
        svh = new HorizontalScrollView(this);
        svh.addView(grd);
        linLayout.addView(svh);
    }
    svv.addView(linLayout);
    setContentView(svv, linLayoutParam);

}