public enum LayoutPolicy extends java.lang.Enum<LayoutPolicy> implements ValueEnum
Note that, by default, Layouts do not automatically expand the size of all members
to match a member that overflows the layout on the breadth axis. This means that a
DynamicForm
or other component that can't shrink beyond a minimum width will
"stick out" of the Layout, wider than any other member and wider than automatically
generated components like resizeBars or sectionHeaders (in a SectionStack
).
This is by design: matching the size of overflowing members would cause expensive redraws of all members in the Layout, and with two or more members potentially overflowing, could turn minor browser size reporting bugs or minor glitches in custom components into infinite resizing loops.
If you run into this situation, you can either:
overflow
: "auto", so that it
scrolls if it needs more space
overflow
:"auto", so that the
whole Layout scrolls when the member overflows
resized()
handler to manually update the
breadth
of the layout
Layout.minBreadthMember
to ensure that the
available breadth used to
expand all (other) members is artificially increased to match the current breadth of the
minBreadthMember
member; the layout will still be overflowed in this case
and the reported size from Canvas.getWidth()
or Canvas.getHeight()
won't
change, but all members should fill the visible width or height along the breadth axis
For the last approach, given the VLayout myLayout
and a member
myWideMember
, then we could define the following resized()
handler on myLayout
:
myLayout.addResizedHandler(new ResizedHandler() { @Override public void onResized(ResizedEvent event) { int memberWidth = myWideMember.getVisibleWidth(); myLayout.setWidth(Math.max(myLayout.getWidth(), memberWidth + offset)); }where
offset
reflects the difference in width (due to margins, padding,
etc.) between the layout and its widest member. In most cases, a fixed offset can
be used, but it can also be computed via the calculation:
myLayout.getWidth() - myLayout.getViewportWidth()by adding a
draw handler
for myLayout
. (That calculation is not always valid inside the
resized()
handler itself.)
Note: the HLayout case is similar- just substitute height where width appears above.
See also Layout.overflow
.
Enum Constant and Description |
---|
FILL
Layout sizes members so that they fill the specified size of the layout.
|
NONE
Layout does not try to size members on the axis at all, merely stacking them (length axis) and leaving them at default
breadth.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getValue() |
static LayoutPolicy |
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.
|
static LayoutPolicy[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final LayoutPolicy NONE
If this enumerated value is used in a Component XML
file or server-side DataSource descriptor (.ds.xml file), use the value "none".
public static final LayoutPolicy FILL
autofits
is given exactly the
space it needs, never forced to take up more. Canvas.minWidth
or Canvas.minHeight
will never be sized smaller
than that size Canvas.maxWidth
or Canvas.maxHeight
will never be sized larger than that size
adaptive sizing
, and may coordinate with the Layout to render at different sizes according to the amount of available
space.
If this enumerated value is used in a Component XML
file or server-side DataSource descriptor (.ds.xml file), use the value "fill".
public static LayoutPolicy[] values()
for (LayoutPolicy c : LayoutPolicy.values()) System.out.println(c);
public static LayoutPolicy valueOf(java.lang.String name)
name
- the name of the enum constant to be returned.java.lang.IllegalArgumentException
- if this enum type has no constant with the specified namejava.lang.NullPointerException
- if the argument is null