Don't understand how to use GridLayout.spec()

纵饮孤独 提交于 2020-01-28 05:15:51

问题


This GridLayout is going in my app that has a lot of levels. Each level has a different number of rows and columns. I assume that this GridLayout would be my best bet to use to satisfy my needs. Also, all need to be done at runtime prorammatically.

I am having trouble understanding how to use GridLayout.spec(). I am trying to follow this excellent example but just cannot grasp it fully. Let's say, for example, I want a GridLayout with 3 columns and 4 rows.

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

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

puzzle.addView(gameplayGridLayout, params1);

In my linked example above, he used code like below to set the "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);

I don't understand the parameters of those variables either. I've tried reading the documentation but it didn't give me any clarity. Can someone help me with my example code of the 3x4 GridLayout which also helps explain what the Specs are?


回答1:


I didn't exactly understand your question, but here are some examples that explain the syntax:

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) 

and etc.

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

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

so you can do like this:

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.

I hope this helps. :)



来源:https://stackoverflow.com/questions/20871690/dont-understand-how-to-use-gridlayout-spec

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!