Flow

public class Flow extends ConstraintHelper, VirtualLayout

Object
   ↳ ConstraintHelper
     ↳ VirtualLayout
       ↳ Flow

Flow VirtualLayout. Added in 2.0 Allows positioning of referenced widgets horizontally or vertically, similar to a Chain. The elements referenced are indicated via constraint_referenced_ids, as with other ConstraintHelper implementations. Those referenced widgets are then laid out by the Flow virtual layout in three possible ways:

  • wrap none : simply create a chain out of the referenced elements
  • wrap chain : create multiple chains (one after the other) if the referenced elements do not fit
  • wrap aligned : similar to wrap chain, but will align the elements by creating rows and columns
As VirtualLayouts are ConstraintHelpers, they are normal views; you can thus treat them as such, and setting up constraints on them (position, dimension) or some view attributes (background, padding) will work. The main difference between VirtualLayouts and ViewGroups is that:
  • VirtualLayout keep the hierarchy flat
  • Other views can thus reference / constrain to not only the VirtualLayout, but also the views laid out by the VirtualLayout
  • VirtualLayout allow on the fly behavior modifications (e.g. for Flow, changing the orientation)
flow_wrapMode = "none" This will simply create an horizontal or vertical chain out of the referenced widgets. This is the default behavior of Flow. XML attributes that are allowed in this mode:
  • flow_horizontalStyle = "spread|spread_inside|packed"
  • flow_verticalStyle = "spread|spread_inside|packed"
  • flow_horizontalBias = "float"
  • flow_verticalBias = "float"
  • flow_horizontalGap = "dimension"
  • flow_verticalGap = "dimension"
  • flow_horizontalAlign = "start|end"
  • flow_verticalAlign = "top|bottom|center|baseline
While the elements are laid out as a chain in the orientation defined, the way they are laid out in the other dimension is controlled by flow_horizontalAlign and flow_verticalAlign attributes. flow_wrapMode = "chain" Similar to wrap none in terms of creating chains, but if the referenced widgets do not fit the horizontal or vertical dimension (depending on the orientation picked), they will wrap around to the next line / column. XML attributes are the same same as in wrap_none, with the addition of attributes specifying chain style and chain bias applied to the first chain. This way, it is possible to specify different chain behavior between the first chain and the rest of the chains eventually created.
  • flow_firstHorizontalStyle = "spread|spread_inside|packed"
  • flow_firstVerticalStyle = "spread|spread_inside|packed"
  • flow_firstHorizontalBias = "float"
  • flow_firstVerticalBias = "float"
One last important attribute is flow_maxElementsWrap, which specify the number of elements before wrapping, regardless if they fit or not in the available space. flow_wrapMode = "aligned" Same XML attributes as for WRAP_CHAIN, with the difference that the elements are going to be laid out in a set of rows and columns instead of chains. The attribute specifying chains style and bias are thus not going to be applied.

Summary

Constants

static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int
static final @NonNull int

Public constructors

Flow(@NonNull Context context)
Flow(@NonNull Context context, @NonNull AttributeSet attrs)
Flow(
    @NonNull Context context,
    @NonNull AttributeSet attrs,
    @NonNull int defStyleAttr
)

Public methods

@Override @NonNull void
loadParameters(
    @NonNull ConstraintSet.Constraint constraint,
    @NonNull HelperWidget child,
    @NonNull ConstraintLayout.LayoutParams layoutParams,
    @NonNull SparseArray<@NonNull ConstraintWidget> mapIdToWidget
)
@Override @NonNull void
onMeasure(
    @NonNull VirtualLayout layout,
    @NonNull int widthMeasureSpec,
    @NonNull int heightMeasureSpec
)
@Override @NonNull void
resolveRtl(@NonNull ConstraintWidget widget, @NonNull boolean isRtl)
@NonNull void

Similar to setHorizontalBias(), but only applied to the first chain.

@NonNull void

Similar to setHorizontalStyle(), but only applies to the first chain.

@NonNull void

Similar to setVerticalBias(), but only applied to the first chain.

@NonNull void

Similar to setVerticalStyle(), but only applies to the first chain.

@NonNull void

Set up the horizontal alignment of the elements in the layout, if the layout orientation is set to Flow.VERTICAL Can be either: Flow.HORIZONTAL_ALIGN_START Flow.HORIZONTAL_ALIGN_END Flow.HORIZONTAL_ALIGN_CENTER

@NonNull void

Set the horizontal bias applied to the chain

@NonNull void

Set up the horizontal gap between elements

@NonNull void

Set horizontal chain style.

@NonNull void

Set up the maximum number of elements before wrapping.

@NonNull void
setOrientation(@NonNull int orientation)

Set the orientation of the layout

@NonNull void
setPadding(@NonNull int padding)

Set padding around the content

@NonNull void
setPaddingBottom(@NonNull int paddingBottom)

Set padding bottom around the content

@NonNull void
setPaddingLeft(@NonNull int paddingLeft)

Set padding left around the content

@NonNull void
setPaddingRight(@NonNull int paddingRight)

Set padding right around the content

@NonNull void
setPaddingTop(@NonNull int paddingTop)

Set padding top around the content

@NonNull void

Set up the vertical alignment of the elements in the layout, if the layout orientation is set to Flow.HORIZONTAL Can be either: Flow.VERTICAL_ALIGN_TOP Flow.VERTICAL_ALIGN_BOTTOM Flow.VERTICAL_ALIGN_CENTER Flow.VERTICAL_ALIGN_BASELINE

@NonNull void
setVerticalBias(@NonNull float bias)

Set the vertical bias applied to the chain

@NonNull void

Set up the vertical gap between elements

@NonNull void

Set vertical chain style.

@NonNull void
setWrapMode(@NonNull int mode)

Set wrap mode for the layout.

Inherited methods

From class ConstraintHelper
@NonNull void

Add a view to the helper.

@NonNull boolean
@NonNull Array<@NonNull int>

Helpers typically reference a collection of ids

@NonNull int
@Override @NonNull void
@NonNull int

Remove a given view from the helper.

@NonNull void

Helpers typically reference a collection of ids

@Override @NonNull void
setTag(@NonNull int key, @NonNull Object tag)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
From class View
@NonNull void
@NonNull void
addExtraDataToAccessibilityNodeInfo(
    @NonNull AccessibilityNodeInfo info,
    @NonNull String extraDataKey,
    @NonNull Bundle arguments
)
@NonNull void
addFocusables(
    @NonNull ArrayList<@NonNull View> views,
    @NonNull int direction
)
@NonNull void
addKeyboardNavigationClusters(
    @NonNull Collection<@NonNull View> views,
    @NonNull int direction
)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull ViewPropertyAnimator
@NonNull void
@NonNull void
@NonNull void
@NonNull void

This method is deprecated.

@NonNull void
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
canScrollVertically(@NonNull int direction)
final @NonNull void
@NonNull void
final @NonNull void
@NonNull boolean
@NonNull void
@NonNull void
static @NonNull int
combineMeasuredStates(@NonNull int curState, @NonNull int newState)
@NonNull void
@NonNull WindowInsets
computeSystemWindowInsets(
    @NonNull WindowInsets in,
    @NonNull Rect outLocalInsets
)
@NonNull AccessibilityNodeInfo
@NonNull void
@NonNull void

This method is deprecated.

@NonNull WindowInsets
@NonNull boolean
@NonNull void
@NonNull void
@NonNull boolean
@NonNull void
@NonNull void
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
dispatchNestedFling(
    @NonNull float velocityX,
    @NonNull float velocityY,
    @NonNull boolean consumed
)
@NonNull boolean
dispatchNestedPreFling(@NonNull float velocityX, @NonNull float velocityY)
@NonNull boolean
dispatchNestedPrePerformAccessibilityAction(
    @NonNull int action,
    @NonNull Bundle arguments
)
@NonNull boolean
dispatchNestedPreScroll(
    @NonNull int dx,
    @NonNull int dy,
    @NonNull Array<@NonNull int> consumed,
    @NonNull Array<@NonNull int> offsetInWindow
)
@NonNull boolean
dispatchNestedScroll(
    @NonNull int dxConsumed,
    @NonNull int dyConsumed,
    @NonNull int dxUnconsumed,
    @NonNull int dyUnconsumed,
    @NonNull Array<@NonNull int> offsetInWindow
)
@NonNull void
@NonNull boolean
@NonNull void
dispatchProvideAutofillStructure(
    @NonNull ViewStructure structure,
    @NonNull int flags
)
@NonNull void
@NonNull void
@NonNull void

This method is deprecated.

@NonNull boolean
@NonNull boolean
@NonNull boolean
dispatchUnhandledMove(@NonNull View focused, @NonNull int direction)
@NonNull void
@NonNull void
@NonNull void
@NonNull WindowInsets
@NonNull WindowInsetsAnimation.Bounds
@NonNull void

This method is deprecated.

@NonNull void
@NonNull void
draw(@NonNull Canvas canvas)
@NonNull void
drawableHotspotChanged(@NonNull float x, @NonNull float y)
@NonNull View
final @NonNull T
<T extends View> findViewById(@NonNull int id)
final @NonNull T
<T extends View> findViewWithTag(@NonNull Object tag)
@NonNull void
findViewsWithText(
    @NonNull ArrayList<@NonNull View> outViews,
    @NonNull CharSequence searched,
    @NonNull int flags
)
@NonNull View
focusSearch(@NonNull int direction)
@NonNull void
forceHasOverlappingRendering(@NonNull boolean hasOverlappingRendering)
@NonNull void
static @NonNull int
@NonNull CharSequence
@NonNull View.AccessibilityDelegate
@NonNull int
@NonNull AccessibilityNodeProvider
@NonNull CharSequence
@NonNull int
@NonNull int
@NonNull float
@NonNull Animation
@NonNull Matrix
@NonNull IBinder
@NonNull Array<@NonNull int>
@NonNull Map<@NonNull Integer, @NonNull Integer>
@NonNull Array<@NonNull String>
final @NonNull AutofillId
@NonNull int
@NonNull AutofillValue
@NonNull Drawable
@NonNull BlendMode
@NonNull ColorStateList
@NonNull PorterDuff.Mode
@NonNull int
final @NonNull int
@NonNull float
@NonNull Rect
@NonNull boolean
final @NonNull boolean
final @NonNull ContentCaptureSession
@NonNull CharSequence
final @NonNull Context
final @NonNull boolean
static @NonNull int
getDefaultSize(@NonNull int size, @NonNull int measureSpec)
@NonNull Display
final @NonNull Array<@NonNull int>
@NonNull Bitmap

This method is deprecated.

@NonNull int

This method is deprecated.

@NonNull int

This method is deprecated.

@NonNull void
@NonNull long
@NonNull float
@NonNull int
@NonNull boolean
@NonNull boolean
@NonNull int
@NonNull ArrayList<@NonNull View>
getFocusables(@NonNull int direction)
@NonNull void
@NonNull Drawable
@NonNull int
@NonNull BlendMode
@NonNull ColorStateList
@NonNull PorterDuff.Mode
@NonNull boolean
@NonNull Handler
final @NonNull boolean
final @NonNull int
@NonNull void
@NonNull int
@NonNull Drawable
@NonNull Drawable
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull boolean
@NonNull KeyEvent.DispatcherState
@NonNull int
@NonNull int
@NonNull int
@NonNull ViewGroup.LayoutParams
final @NonNull int
final @NonNull boolean
@NonNull void
@NonNull void
@NonNull void
@NonNull Matrix
final @NonNull int
final @NonNull int
final @NonNull int
final @NonNull int
final @NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull View.OnFocusChangeListener
@NonNull int
@NonNull ViewOutlineProvider
@NonNull int
@NonNull int
@NonNull ViewOverlay
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
final @NonNull ViewParent
@NonNull ViewParent
@NonNull float
@NonNull float
@NonNull PointerIcon
@NonNull Resources
final @NonNull boolean
final @NonNull int
@NonNull View
@NonNull WindowInsets
@NonNull float
@NonNull float
@NonNull float
@NonNull float
@NonNull float
@NonNull int
@NonNull int
@NonNull int
@NonNull int
@NonNull int
final @NonNull int
final @NonNull int
@NonNull int
@NonNull int
final @NonNull CharSequence
@NonNull StateListAnimator
@NonNull List<@NonNull Rect>
@NonNull int

This method is deprecated.

@NonNull Object
@NonNull int
@NonNull int
@NonNull CharSequence
final @NonNull int
@NonNull TouchDelegate
@NonNull ArrayList<@NonNull View>
@NonNull float
@NonNull String
@NonNull float
@NonNull float
@NonNull float
@NonNull long
@NonNull int
@NonNull int
@NonNull Drawable
@NonNull Drawable
@NonNull int
@NonNull ViewTreeObserver
@NonNull int
final @NonNull int
@NonNull WindowId
@NonNull WindowInsetsController
@NonNull int

This method is deprecated.

@NonNull IBinder
@NonNull int
@NonNull void
@NonNull float
@NonNull float
@NonNull float
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
static @NonNull View
inflate(
    @NonNull Context context,
    @NonNull int resource,
    @NonNull ViewGroup root
)
@NonNull void

This method is deprecated.

@NonNull void
@NonNull void
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean

This method is deprecated.

@NonNull boolean
@NonNull boolean
final @NonNull boolean
final @NonNull boolean
@NonNull boolean
final @NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
final @NonNull boolean
final @NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
final @NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
final @NonNull boolean
@NonNull boolean
@NonNull boolean
final @NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull boolean
@NonNull void
@NonNull View
keyboardNavigationClusterSearch(
    @NonNull View currentCluster,
    @NonNull int direction
)
@NonNull void
layout(@NonNull int l, @NonNull int t, @NonNull int r, @NonNull int b)
final @NonNull void
measure(@NonNull int widthMeasureSpec, @NonNull int heightMeasureSpec)
@NonNull void
@NonNull void
@NonNull WindowInsets
@NonNull void
@NonNull boolean
@NonNull boolean
@NonNull InputConnection
@NonNull boolean
@NonNull void
@NonNull boolean
@NonNull void
@NonNull boolean
@NonNull void
onHoverChanged(@NonNull boolean hovered)
@NonNull boolean
@NonNull void
@NonNull void
@NonNull boolean
onKeyDown(@NonNull int keyCode, @NonNull KeyEvent event)
@NonNull boolean
onKeyLongPress(@NonNull int keyCode, @NonNull KeyEvent event)
@NonNull boolean
onKeyMultiple(
    @NonNull int keyCode,
    @NonNull int repeatCount,
    @NonNull KeyEvent event
)
@NonNull boolean
onKeyPreIme(@NonNull int keyCode, @NonNull KeyEvent event)
@NonNull boolean
onKeyShortcut(@NonNull int keyCode, @NonNull KeyEvent event)
@NonNull boolean
onKeyUp(@NonNull int keyCode, @NonNull KeyEvent event)
@NonNull void
onPointerCaptureChange(@NonNull boolean hasCapture)
@NonNull void
@NonNull void
onProvideAutofillStructure(
    @NonNull ViewStructure structure,
    @NonNull int flags
)
@NonNull void
onProvideAutofillVirtualStructure(
    @NonNull ViewStructure structure,
    @NonNull int flags
)
@NonNull void
onProvideContentCaptureStructure(
    @NonNull ViewStructure structure,
    @NonNull int flags
)
@NonNull void
@NonNull void
@NonNull PointerIcon
onResolvePointerIcon(@NonNull MotionEvent event, @NonNull int pointerIndex)
@NonNull void
onRtlPropertiesChanged(@NonNull int layoutDirection)
@NonNull void
onScreenStateChanged(@NonNull int screenState)
@NonNull void
@NonNull boolean
@NonNull boolean
@NonNull void
onVisibilityAggregated(@NonNull boolean isVisible)
@NonNull void
onWindowFocusChanged(@NonNull boolean hasWindowFocus)
@NonNull void

This method is deprecated.

@NonNull boolean
performAccessibilityAction(@NonNull int action, @NonNull Bundle arguments)
@NonNull boolean
@NonNull boolean
performContextClick(@NonNull float x, @NonNull float y)
@NonNull boolean
performHapticFeedback(@NonNull int feedbackConstant)
@NonNull boolean
@NonNull void
playSoundEffect(@NonNull int soundConstant)
@NonNull boolean
@NonNull boolean
postDelayed(@NonNull Runnable action, @NonNull long delayMillis)
@NonNull void
@NonNull void
postInvalidateDelayed(@NonNull long delayMilliseconds)
@NonNull void
@NonNull void
@NonNull void
postOnAnimationDelayed(@NonNull Runnable action, @NonNull long delayMillis)
@NonNull void
@NonNull void
@NonNull boolean
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void

This method is deprecated.

final @NonNull boolean
final @NonNull boolean
@NonNull void
@NonNull void
@NonNull boolean
final @NonNull void
final @NonNull T
<T extends View> requireViewById(@NonNull int id)
@NonNull void
static @NonNull int
resolveSize(@NonNull int size, @NonNull int measureSpec)
static @NonNull int
resolveSizeAndState(
    @NonNull int size,
    @NonNull int measureSpec,
    @NonNull int childMeasuredState
)
@NonNull boolean
@NonNull void
final @NonNull void
saveAttributeDataForStyleable(
    @NonNull Context context,
    @NonNull Array<@NonNull int> styleable,
    @NonNull AttributeSet attrs,
    @NonNull TypedArray t,
    @NonNull int defStyleAttr,
    @NonNull int defStyleRes
)
@NonNull void
@NonNull void
scheduleDrawable(
    @NonNull Drawable who,
    @NonNull Runnable what,
    @NonNull long when
)
@NonNull void
scrollBy(@NonNull int x, @NonNull int y)
@NonNull void
scrollTo(@NonNull int x, @NonNull int y)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setAccessibilityHeading(@NonNull boolean isHeading)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setActivated(@NonNull boolean activated)
@NonNull void
setAlpha(@NonNull float alpha)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void

This method is deprecated.

@NonNull void
@NonNull void
@NonNull void
@NonNull void
final @NonNull void
setBottom(@NonNull int bottom)
@NonNull void
setCameraDistance(@NonNull float distance)
@NonNull void
setClickable(@NonNull boolean clickable)
@NonNull void
setClipBounds(@NonNull Rect clipBounds)
@NonNull void
setClipToOutline(@NonNull boolean clipToOutline)
@NonNull void
setContentCaptureSession(
    @NonNull ContentCaptureSession contentCaptureSession
)
@NonNull void
@NonNull void
setContextClickable(@NonNull boolean contextClickable)
@NonNull void
setDefaultFocusHighlightEnabled(
    @NonNull boolean defaultFocusHighlightEnabled
)
@NonNull void

This method is deprecated.

@NonNull void
setDrawingCacheEnabled(@NonNull boolean enabled)

This method is deprecated.

@NonNull void

This method is deprecated.

@NonNull void
@NonNull void
setElevation(@NonNull float elevation)
@NonNull void
setEnabled(@NonNull boolean enabled)
@NonNull void
@NonNull void
@NonNull void
setFitsSystemWindows(@NonNull boolean fitSystemWindows)
@NonNull void
setFocusable(@NonNull boolean focusable)
@NonNull void
setFocusableInTouchMode(@NonNull boolean focusableInTouchMode)
@NonNull void
setFocusedByDefault(@NonNull boolean isFocusedByDefault)
@NonNull void
setForceDarkAllowed(@NonNull boolean allow)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setHapticFeedbackEnabled(@NonNull boolean hapticFeedbackEnabled)
@NonNull void
setHasTransientState(@NonNull boolean hasTransientState)
@NonNull void
setHorizontalFadingEdgeEnabled(
    @NonNull boolean horizontalFadingEdgeEnabled
)
@NonNull void
setHorizontalScrollBarEnabled(
    @NonNull boolean horizontalScrollBarEnabled
)
@NonNull void
@NonNull void
@NonNull void
setHovered(@NonNull boolean hovered)
@NonNull void
setId(@NonNull int id)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setKeepScreenOn(@NonNull boolean keepScreenOn)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setLayerType(@NonNull int layerType, @NonNull Paint paint)
@NonNull void
setLayoutDirection(@NonNull int layoutDirection)
@NonNull void
final @NonNull void
setLeft(@NonNull int left)
final @NonNull void
setLeftTopRightBottom(
    @NonNull int left,
    @NonNull int top,
    @NonNull int right,
    @NonNull int bottom
)
@NonNull void
setLongClickable(@NonNull boolean longClickable)
@NonNull void
setMinimumHeight(@NonNull int minHeight)
@NonNull void
setMinimumWidth(@NonNull int minWidth)
@NonNull void
@NonNull void
setNextClusterForwardId(@NonNull int nextClusterForwardId)
@NonNull void
setNextFocusDownId(@NonNull int nextFocusDownId)
@NonNull void
setNextFocusForwardId(@NonNull int nextFocusForwardId)
@NonNull void
setNextFocusLeftId(@NonNull int nextFocusLeftId)
@NonNull void
setNextFocusRightId(@NonNull int nextFocusRightId)
@NonNull void
setNextFocusUpId(@NonNull int nextFocusUpId)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void

This method is deprecated.

@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setOverScrollMode(@NonNull int overScrollMode)
@NonNull void
setPadding(
    @NonNull int left,
    @NonNull int top,
    @NonNull int right,
    @NonNull int bottom
)
@NonNull void
setPaddingRelative(
    @NonNull int start,
    @NonNull int top,
    @NonNull int end,
    @NonNull int bottom
)
@NonNull void
setPivotX(@NonNull float pivotX)
@NonNull void
setPivotY(@NonNull float pivotY)
@NonNull void
@NonNull void
setPressed(@NonNull boolean pressed)
final @NonNull void
setRevealOnFocusHint(@NonNull boolean revealOnFocus)
final @NonNull void
setRight(@NonNull int right)
@NonNull void
setRotation(@NonNull float rotation)
@NonNull void
setRotationX(@NonNull float rotationX)
@NonNull void
setRotationY(@NonNull float rotationY)
@NonNull void
setSaveEnabled(@NonNull boolean enabled)
@NonNull void
@NonNull void
setScaleX(@NonNull float scaleX)
@NonNull void
setScaleY(@NonNull float scaleY)
@NonNull void
setScreenReaderFocusable(@NonNull boolean screenReaderFocusable)
@NonNull void
setScrollBarDefaultDelayBeforeFade(
    @NonNull int scrollBarDefaultDelayBeforeFade
)
@NonNull void
setScrollBarFadeDuration(@NonNull int scrollBarFadeDuration)
@NonNull void
setScrollBarSize(@NonNull int scrollBarSize)
@NonNull void
@NonNull void
setScrollContainer(@NonNull boolean isScrollContainer)
@NonNull void
setScrollIndicators(@NonNull int indicators)
@NonNull void
setScrollX(@NonNull int value)
@NonNull void
setScrollY(@NonNull int value)
@NonNull void
setScrollbarFadingEnabled(@NonNull boolean fadeScrollbars)
@NonNull void
setSelected(@NonNull boolean selected)
@NonNull void
setSoundEffectsEnabled(@NonNull boolean soundEffectsEnabled)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setSystemUiVisibility(@NonNull int visibility)

This method is deprecated.

@NonNull void
@NonNull void
setTextAlignment(@NonNull int textAlignment)
@NonNull void
setTextDirection(@NonNull int textDirection)
@NonNull void
final @NonNull void
setTop(@NonNull int top)
@NonNull void
@NonNull void
final @NonNull void
setTransitionName(@NonNull String transitionName)
@NonNull void
@NonNull void
setTranslationX(@NonNull float translationX)
@NonNull void
setTranslationY(@NonNull float translationY)
@NonNull void
setTranslationZ(@NonNull float translationZ)
@NonNull void
setVerticalFadingEdgeEnabled(@NonNull boolean verticalFadingEdgeEnabled)
@NonNull void
setVerticalScrollBarEnabled(@NonNull boolean verticalScrollBarEnabled)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setVisibility(@NonNull int visibility)
@NonNull void
setWillNotCacheDrawing(@NonNull boolean willNotCacheDrawing)

This method is deprecated.

@NonNull void
setWillNotDraw(@NonNull boolean willNotDraw)
@NonNull void
@NonNull void
setX(@NonNull float x)
@NonNull void
setY(@NonNull float y)
@NonNull void
setZ(@NonNull float z)
@NonNull boolean
@NonNull ActionMode
@NonNull void
final @NonNull boolean
startDrag(
    @NonNull ClipData data,
    @NonNull View.DragShadowBuilder shadowBuilder,
    @NonNull Object myLocalState,
    @NonNull int flags
)

This method is deprecated.

final @NonNull boolean
startDragAndDrop(
    @NonNull ClipData data,
    @NonNull View.DragShadowBuilder shadowBuilder,
    @NonNull Object myLocalState,
    @NonNull int flags
)
@NonNull boolean
@NonNull void
@NonNull String
@NonNull void
@NonNull void
@NonNull void
final @NonNull void
@NonNull boolean

This method is deprecated.

@NonNull boolean
From class VirtualLayout
@Override @NonNull void
@Override @NonNull void
setElevation(@NonNull float elevation)
@Override @NonNull void
setVisibility(@NonNull int visibility)

Constants

CHAIN_PACKED

@NonNull
public static final @NonNull int CHAIN_PACKED

CHAIN_SPREAD

@NonNull
public static final @NonNull int CHAIN_SPREAD

CHAIN_SPREAD_INSIDE

@NonNull
public static final @NonNull int CHAIN_SPREAD_INSIDE

HORIZONTAL

@NonNull
public static final @NonNull int HORIZONTAL

HORIZONTAL_ALIGN_CENTER

@NonNull
public static final @NonNull int HORIZONTAL_ALIGN_CENTER

HORIZONTAL_ALIGN_END

@NonNull
public static final @NonNull int HORIZONTAL_ALIGN_END

HORIZONTAL_ALIGN_START

@NonNull
public static final @NonNull int HORIZONTAL_ALIGN_START

VERTICAL

@NonNull
public static final @NonNull int VERTICAL

VERTICAL_ALIGN_BASELINE

@NonNull
public static final @NonNull int VERTICAL_ALIGN_BASELINE

VERTICAL_ALIGN_BOTTOM

@NonNull
public static final @NonNull int VERTICAL_ALIGN_BOTTOM

VERTICAL_ALIGN_CENTER

@NonNull
public static final @NonNull int VERTICAL_ALIGN_CENTER

VERTICAL_ALIGN_TOP

@NonNull
public static final @NonNull int VERTICAL_ALIGN_TOP

WRAP_ALIGNED

@NonNull
public static final @NonNull int WRAP_ALIGNED

WRAP_CHAIN

@NonNull
public static final @NonNull int WRAP_CHAIN

WRAP_NONE

@NonNull
public static final @NonNull int WRAP_NONE

Public constructors

Flow

public Flow(@NonNull Context context)

Flow

public Flow(@NonNull Context context, @NonNull AttributeSet attrs)

Flow

public Flow(
    @NonNull Context context,
    @NonNull AttributeSet attrs,
    @NonNull int defStyleAttr
)

Public methods

loadParameters

@Override
@NonNull
public @Override void loadParameters(
    @NonNull ConstraintSet.Constraint constraint,
    @NonNull HelperWidget child,
    @NonNull ConstraintLayout.LayoutParams layoutParams,
    @NonNull SparseArray<@NonNull ConstraintWidget> mapIdToWidget
)

onMeasure

@Override
@NonNull
public @Override void onMeasure(
    @NonNull VirtualLayout layout,
    @NonNull int widthMeasureSpec,
    @NonNull int heightMeasureSpec
)
Parameters
@NonNull VirtualLayout layout
@NonNull int widthMeasureSpec
@NonNull int heightMeasureSpec

resolveRtl

@Override
@NonNull
public @Override void resolveRtl(@NonNull ConstraintWidget widget, @NonNull boolean isRtl)
Parameters
@NonNull ConstraintWidget widget
@NonNull boolean isRtl

setFirstHorizontalBias

@NonNull
public void setFirstHorizontalBias(@NonNull float bias)

Similar to setHorizontalBias(), but only applied to the first chain.

Parameters
@NonNull float bias

setFirstHorizontalStyle

@NonNull
public void setFirstHorizontalStyle(@NonNull int style)

Similar to setHorizontalStyle(), but only applies to the first chain.

Parameters
@NonNull int style

setFirstVerticalBias

@NonNull
public void setFirstVerticalBias(@NonNull float bias)

Similar to setVerticalBias(), but only applied to the first chain.

Parameters
@NonNull float bias

setFirstVerticalStyle

@NonNull
public void setFirstVerticalStyle(@NonNull int style)

Similar to setVerticalStyle(), but only applies to the first chain.

Parameters
@NonNull int style

setHorizontalAlign

@NonNull
public void setHorizontalAlign(@NonNull int align)

Set up the horizontal alignment of the elements in the layout, if the layout orientation is set to Flow.VERTICAL Can be either: Flow.HORIZONTAL_ALIGN_START Flow.HORIZONTAL_ALIGN_END Flow.HORIZONTAL_ALIGN_CENTER

Parameters
@NonNull int align

setHorizontalBias

@NonNull
public void setHorizontalBias(@NonNull float bias)

Set the horizontal bias applied to the chain

Parameters
@NonNull float bias

from 0 to 1

setHorizontalGap

@NonNull
public void setHorizontalGap(@NonNull int gap)

Set up the horizontal gap between elements

Parameters
@NonNull int gap

setHorizontalStyle

@NonNull
public void setHorizontalStyle(@NonNull int style)

Set horizontal chain style. Can be: Flow.CHAIN_SPREAD Flow.CHAIN_SPREAD_INSIDE Flow.CHAIN_PACKED

Parameters
@NonNull int style

setMaxElementsWrap

@NonNull
public void setMaxElementsWrap(@NonNull int max)

Set up the maximum number of elements before wrapping.

Parameters
@NonNull int max

setOrientation

@NonNull
public void setOrientation(@NonNull int orientation)

Set the orientation of the layout

Parameters
@NonNull int orientation

either Flow.HORIZONTAL or FLow.VERTICAL

setPadding

@NonNull
public void setPadding(@NonNull int padding)

Set padding around the content

Parameters
@NonNull int padding

setPaddingBottom

@NonNull
public void setPaddingBottom(@NonNull int paddingBottom)

Set padding bottom around the content

Parameters
@NonNull int paddingBottom

setPaddingLeft

@NonNull
public void setPaddingLeft(@NonNull int paddingLeft)

Set padding left around the content

Parameters
@NonNull int paddingLeft

setPaddingRight

@NonNull
public void setPaddingRight(@NonNull int paddingRight)

Set padding right around the content

Parameters
@NonNull int paddingRight

setPaddingTop

@NonNull
public void setPaddingTop(@NonNull int paddingTop)

Set padding top around the content

Parameters
@NonNull int paddingTop

setVerticalAlign

@NonNull
public void setVerticalAlign(@NonNull int align)

Set up the vertical alignment of the elements in the layout, if the layout orientation is set to Flow.HORIZONTAL Can be either: Flow.VERTICAL_ALIGN_TOP Flow.VERTICAL_ALIGN_BOTTOM Flow.VERTICAL_ALIGN_CENTER Flow.VERTICAL_ALIGN_BASELINE

Parameters
@NonNull int align

setVerticalBias

@NonNull
public void setVerticalBias(@NonNull float bias)

Set the vertical bias applied to the chain

Parameters
@NonNull float bias

from 0 to 1

setVerticalGap

@NonNull
public void setVerticalGap(@NonNull int gap)

Set up the vertical gap between elements

Parameters
@NonNull int gap

setVerticalStyle

@NonNull
public void setVerticalStyle(@NonNull int style)

Set vertical chain style. Can be: Flow.CHAIN_SPREAD Flow.CHAIN_SPREAD_INSIDE Flow.CHAIN_PACKED

Parameters
@NonNull int style

setWrapMode

@NonNull
public void setWrapMode(@NonNull int mode)

Set wrap mode for the layout. Can be: Flow.WRAP_NONE (default) -- no wrap behavior, create a single chain Flow.WRAP_CHAIN -- if not enough space to fit the referenced elements, will create additional chains after the first one Flow.WRAP_ALIGNED -- if not enough space to fit the referenced elements, will wrap the elements, keeping them aligned (like a table)

Parameters
@NonNull int mode