-
Notifications
You must be signed in to change notification settings - Fork 175
[Grid] replace Guidelines with viewBoxes #622
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing ConstraintSet
As an example of how you remove
assume you have
private ConstraintLayout.LayoutParams params(View v) {
return (ConstraintLayout.LayoutParams) view.getLayoutParams();
}
A chain is constraint like this
| | -> | |-> | |
start <- | View1 | | view2 | | view3 | -> end
| | <- | | <- | |
So if you are making a horizontal chain
int starId = StartView.getID();
int endId = EndView.getID();
int pre = startId
View[] toChain ...
int [] chainIDs
for(int i = 0; i < toChain.length; i++){
param= prams(toChain[i])
if (i == 0)
param.startToStart = pre;
else
param.startToEnd = pre;
if (i == lastInChain)
param.endToEnd = endId;
else
param.endToStart = chainId[i+1];
pre = chainId[i];
toChain[i].setLayoutParams(param);
}
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Outdated
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
...raintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
Show resolved
Hide resolved
All other issues will be addressed in another PR |
This PR does two things:
To make the Grid more flexible, viewBoxes (Views) are created to replace Guidelines for widgets to add constraints to.
There are two main advantage of this approach:
The basic idea is that we create and place boxViews to constraint widgets. See the following figures for examples. Figure 1 shows how boxViews are created and rearranged for a 7 X 4 (rows X columns) Grid and Figure 2 shows an example of a 4 X 7 Grid.
The additional views needed to be created for the viewBox approach would be max(rows, columns). As for the Guideline approach, it would be (row - 1 + columns - 1).
Figure 1
Figure 2