【问题标题】:Don't understand how to use GridLayout.spec()不明白如何使用 GridLayout.spec()
【发布时间】:2015-07-09 00:12:50
【问题描述】:

这个 GridLayout 将在我的应用程序中进行,它有很多级别。每个级别都有不同数量的行和列。我认为这个 GridLayout 将是我用来满足我的需求的最佳选择。此外,所有这些都需要在运行时以编程方式完成。

我无法理解如何使用GridLayout.spec()。我正在尝试关注this excellent example,但无法完全掌握。比如说,我想要一个 3 列 4 行的 GridLayout。

GridLayout.LayoutParms params1 = new GridLayout.Layout(rowSpec, columnSpec);  //what's parameters?

gameplayGridLayout.setColumnCount(3);
gameplayGridLayout.setRowCount(4);

puzzle.addView(gameplayGridLayout, params1);

在我上面的链接示例中,他使用如下代码设置"specs"

Spec row1 = GridLayout.spec(0, 2);
Spec row2 = GridLayout.spec(2);
Spec row3 = GridLayout.spec(3);
Spec row4 = GridLayout.spec(4, 2);

Spec col0 = GridLayout.spec(0);
Spec col1 = GridLayout.spec(1); 
Spec colspan2 = GridLayout.spec(0, 2);

我也不明白这些变量的参数。我试过阅读文档,但没有让我清楚。有人可以帮我提供 3x4 GridLayout 的示例代码,这也有助于解释 Specs 是什么?

【问题讨论】:

    标签: java android grid-layout specifications


    【解决方案1】:

    我没有完全理解你的问题,但这里有一些解释语法的例子:

    Spec row1 = GridLayout.spec(0, 2); //here you set row to be first row and it takes 2 cells in height.
    
    Spec row2  = GridLayout.spec(2); //this row goes under row1 and it takes 1 cell(default size = 1) 
    

    等等

    Spec col0 = GridLayout.spec(0); //same here - first column, width = 1 cell.
    
    Spec colspan2 = GridLayout.spec(0, 2);
    

    所以你可以这样做:

    Spec row1 = GridLayout.spec(0);
    Spec row2 = GridLayout.spec(1);
    Spec row3 = GridLayout.spec(2);
    Spec row4 = GridLayout.spec(3);
    
    Spec col0 = GridLayout.spec(0);
    Spec col1 = GridLayout.spec(1); 
    Spec col2 = GridLayout.spec(2);
    
    GridLayout gridLayout = new GridLayout(this);
    GridLayout.LayoutParams first = new GridLayout.LayoutParams(row1, col0);
    /*Here you can set options for first cell which is in first row and first column.*/
    first.width = screenWidth;
    first.height = quarterScreenWidth * 2;
    twoByTwo1.setLayoutParams(first);
    twoByTwo1.setGravity(Gravity.CENTER);
    twoByTwo1.setBackgroundColor(Color.RED);
    twoByTwo1.setText("TOP");
    twoByTwo1.setTextAppearance(this, android.R.style.TextAppearance_Large);
    gridLayout.addView(twoByTwo1, first)
    //You can set all cells like above.
    

    我希望这会有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 2014-12-28
      • 2013-03-04
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多