Class VerticalStepperFormView

  • All Implemented Interfaces:
    android.graphics.drawable.Drawable.Callback, android.view.accessibility.AccessibilityEventSource, android.view.KeyEvent.Callback, android.view.ViewManager, android.view.ViewParent

    public class VerticalStepperFormView
    extends android.widget.LinearLayout
    Custom layout that implements a vertical stepper form.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class android.widget.LinearLayout

        android.widget.LinearLayout.LayoutParams
      • Nested classes/interfaces inherited from class android.view.ViewGroup

        android.view.ViewGroup.MarginLayoutParams, android.view.ViewGroup.OnHierarchyChangeListener
      • Nested classes/interfaces inherited from class android.view.View

        android.view.View.AccessibilityDelegate, android.view.View.BaseSavedState, android.view.View.DragShadowBuilder, android.view.View.MeasureSpec, android.view.View.OnApplyWindowInsetsListener, android.view.View.OnAttachStateChangeListener, android.view.View.OnCapturedPointerListener, android.view.View.OnClickListener, android.view.View.OnContextClickListener, android.view.View.OnCreateContextMenuListener, android.view.View.OnDragListener, android.view.View.OnFocusChangeListener, android.view.View.OnGenericMotionListener, android.view.View.OnHoverListener, android.view.View.OnKeyListener, android.view.View.OnLayoutChangeListener, android.view.View.OnLongClickListener, android.view.View.OnScrollChangeListener, android.view.View.OnSystemUiVisibilityChangeListener, android.view.View.OnTouchListener, android.view.View.OnUnhandledKeyEventListener
    • Field Summary

      • Fields inherited from class android.widget.LinearLayout

        HORIZONTAL, SHOW_DIVIDER_BEGINNING, SHOW_DIVIDER_END, SHOW_DIVIDER_MIDDLE, SHOW_DIVIDER_NONE, VERTICAL
      • Fields inherited from class android.view.ViewGroup

        CLIP_TO_PADDING_MASK, FOCUS_AFTER_DESCENDANTS, FOCUS_BEFORE_DESCENDANTS, FOCUS_BLOCK_DESCENDANTS, LAYOUT_MODE_CLIP_BOUNDS, LAYOUT_MODE_OPTICAL_BOUNDS, PERSISTENT_ALL_CACHES, PERSISTENT_ANIMATION_CACHE, PERSISTENT_NO_CACHE, PERSISTENT_SCROLLING_CACHE
      • Fields inherited from class android.view.View

        ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, AUTOFILL_HINT_CREDIT_CARD_NUMBER, AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, AUTOFILL_HINT_EMAIL_ADDRESS, AUTOFILL_HINT_NAME, AUTOFILL_HINT_PASSWORD, AUTOFILL_HINT_PHONE, AUTOFILL_HINT_POSTAL_ADDRESS, AUTOFILL_HINT_POSTAL_CODE, AUTOFILL_HINT_USERNAME, AUTOFILL_TYPE_DATE, AUTOFILL_TYPE_LIST, AUTOFILL_TYPE_NONE, AUTOFILL_TYPE_TEXT, AUTOFILL_TYPE_TOGGLE, DRAG_FLAG_GLOBAL, DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION, DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION, DRAG_FLAG_GLOBAL_URI_READ, DRAG_FLAG_GLOBAL_URI_WRITE, DRAG_FLAG_OPAQUE, DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_HIGH, DRAWING_CACHE_QUALITY_LOW, EMPTY_STATE_SET, ENABLED_FOCUSED_SELECTED_STATE_SET, ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_FOCUSED_STATE_SET, ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, ENABLED_SELECTED_STATE_SET, ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_STATE_SET, ENABLED_WINDOW_FOCUSED_STATE_SET, FIND_VIEWS_WITH_CONTENT_DESCRIPTION, FIND_VIEWS_WITH_TEXT, FOCUS_BACKWARD, FOCUS_DOWN, FOCUS_FORWARD, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_UP, FOCUSABLE, FOCUSABLE_AUTO, FOCUSABLES_ALL, FOCUSABLES_TOUCH_MODE, FOCUSED_SELECTED_STATE_SET, FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, FOCUSED_STATE_SET, FOCUSED_WINDOW_FOCUSED_STATE_SET, GONE, HAPTIC_FEEDBACK_ENABLED, IMPORTANT_FOR_ACCESSIBILITY_AUTO, IMPORTANT_FOR_ACCESSIBILITY_NO, IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, IMPORTANT_FOR_ACCESSIBILITY_YES, IMPORTANT_FOR_AUTOFILL_AUTO, IMPORTANT_FOR_AUTOFILL_NO, IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_AUTOFILL_YES, IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, IMPORTANT_FOR_CONTENT_CAPTURE_NO, IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_YES, IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, INVISIBLE, KEEP_SCREEN_ON, LAYER_TYPE_HARDWARE, LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYOUT_DIRECTION_INHERIT, LAYOUT_DIRECTION_LOCALE, LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL, MEASURED_HEIGHT_STATE_SHIFT, MEASURED_SIZE_MASK, MEASURED_STATE_MASK, MEASURED_STATE_TOO_SMALL, NO_ID, NOT_FOCUSABLE, OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_NEVER, PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_SELECTED_STATE_SET, PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_STATE_SET, PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_SELECTED_STATE_SET, PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_STATE_SET, PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_SELECTED_STATE_SET, PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_STATE_SET, PRESSED_WINDOW_FOCUSED_STATE_SET, ROTATION, ROTATION_X, ROTATION_Y, SCALE_X, SCALE_Y, SCREEN_STATE_OFF, SCREEN_STATE_ON, SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_NONE, SCROLL_AXIS_VERTICAL, SCROLL_CAPTURE_HINT_AUTO, SCROLL_CAPTURE_HINT_EXCLUDE, SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS, SCROLL_CAPTURE_HINT_INCLUDE, SCROLL_INDICATOR_BOTTOM, SCROLL_INDICATOR_END, SCROLL_INDICATOR_LEFT, SCROLL_INDICATOR_RIGHT, SCROLL_INDICATOR_START, SCROLL_INDICATOR_TOP, SCROLLBAR_POSITION_DEFAULT, SCROLLBAR_POSITION_LEFT, SCROLLBAR_POSITION_RIGHT, SCROLLBARS_INSIDE_INSET, SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_OUTSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY, SELECTED_STATE_SET, SELECTED_WINDOW_FOCUSED_STATE_SET, SOUND_EFFECTS_ENABLED, STATUS_BAR_HIDDEN, STATUS_BAR_VISIBLE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE, SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, SYSTEM_UI_FLAG_LOW_PROFILE, SYSTEM_UI_FLAG_VISIBLE, SYSTEM_UI_LAYOUT_FLAGS, TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_GRAVITY, TEXT_ALIGNMENT_INHERIT, TEXT_ALIGNMENT_TEXT_END, TEXT_ALIGNMENT_TEXT_START, TEXT_ALIGNMENT_VIEW_END, TEXT_ALIGNMENT_VIEW_START, TEXT_DIRECTION_ANY_RTL, TEXT_DIRECTION_FIRST_STRONG, TEXT_DIRECTION_FIRST_STRONG_LTR, TEXT_DIRECTION_FIRST_STRONG_RTL, TEXT_DIRECTION_INHERIT, TEXT_DIRECTION_LOCALE, TEXT_DIRECTION_LTR, TEXT_DIRECTION_RTL, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, VIEW_LOG_TAG, VISIBLE, WINDOW_FOCUSED_STATE_SET, X, Y, Z
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addStep​(int index, Step<?> stepToAdd)
      Adds a step to the form in the specified position.
      boolean areAllPreviousStepsCompleted​(int stepPosition)
      Determines whether all the steps previous to the specified one are currently marked as completed.
      boolean areAllStepsCompleted()
      Determines whether all the steps are currently marked as completed.
      void cancelForm()
      Cancels the form, disabling the step navigation and the button(s) of the currently open step, and invoking onCancelledForm() on the listener.
      void cancelFormCompletionOrCancellationAttempt()
      To be used after a failed form completion attempt or after a dismissed cancellation attempt, this method re-activates the navigation to other steps and re-enables the button(s) of the currently open step.
      void completeForm()
      If all the steps are currently marked as completed, completes the form, disabling the step navigation and the button(s) of the last step, and invoking onCompletedForm() on the listener.
      protected void disableNextButtonInBottomNavigation()  
      protected void disablePreviousButtonInBottomNavigation()  
      protected void enableNextButtonInBottomNavigation()  
      protected void enablePreviousButtonInBottomNavigation()  
      Step<?> getOpenStep()
      Gets the currently open step.
      int getOpenStepPosition()
      Gets the position of the currently open step.
      android.view.View getStepContentLayout​(int stepPosition)
      Gets the content layout of the specified step (i.e., the layout which was provided at start to setup the step).
      protected int getStepLayoutResourceId​(int position, boolean isLast)  
      int getStepPosition​(Step<?> step)
      Gets the position of the specified step within the list of steps of the form.
      int getTotalNumberOfSteps()
      Gets the total number of steps of the form.
      boolean goToNextStep​(boolean useAnimations)
      If possible, goes to the step that is positioned after the currently open one, closing the current one and opening the next one.
      boolean goToPreviousStep​(boolean useAnimations)
      If possible, goes to the step that is positioned before the currently open one, closing the current one and opening the previous one.
      boolean goToStep​(int stepPosition, boolean useAnimations)
      If possible, goes to the specified step, closing the currently open one and opening the target one.
      void hideBottomNavigation()
      Hides the bottom navigation bar.
      boolean isAnyStepCompleted()
      Determines whether there is at least one step marked as completed.
      boolean isFormCompleted()
      Determines whether the form has already been completed or cancelled.
      boolean isOpenStepCompleted()
      Determines whether the open step is marked as completed or not.
      boolean isStepCompleted​(int stepPosition)
      Determines whether the specified step is marked as completed or not.
      void markOpenStepAsCompleted​(boolean useAnimations)
      Marks the currently open step as completed.
      boolean markOpenStepAsCompletedOrUncompleted​(boolean useAnimations)
      Marks the currently open step as completed or uncompleted depending on whether the step data is valid or not.
      void markOpenStepAsUncompleted​(boolean useAnimations, java.lang.String errorMessage)
      Marks the currently open step as uncompleted.
      void markStepAsCompleted​(int stepPosition, boolean useAnimations)
      Marks the specified step as completed.
      boolean markStepAsCompletedOrUncompleted​(int stepPosition, boolean useAnimations)
      Marks the specified step as completed or uncompleted depending on whether the step data is valid or not.
      void markStepAsUncompleted​(int stepPosition, java.lang.String errorMessage, boolean useAnimations)
      Marks the specified step as uncompleted.
      protected void onDetachedFromWindow()  
      protected void onFinishInflate()  
      void onRestoreInstanceState​(android.os.Parcelable state)  
      android.os.Parcelable onSaveInstanceState()  
      int refreshFormProgress()
      Refreshes the progress bar of the bottom navigation depending on the number of steps marked as completed, returning the number of completed steps.
      boolean removeStep​(int index)
      Removes the step that is placed at the specified position.
      void scrollToOpenStepIfNecessary​(boolean smoothScroll)
      Scrolls to the top of the currently open step, but only in case its content is not visible.
      void scrollToStepIfNecessary​(int stepPosition, boolean smoothScroll)
      Scrolls to the top of the specified step, but only in case its content is not visible.
      Builder setup​(StepperFormListener stepperFormListener, Step<?>... steps)
      Gets an instance of the builder that will be used to set up and initialize the form.
      Builder setup​(StepperFormListener stepperFormListener, java.util.List<Step<?>> steps)
      Gets an instance of the builder that will be used to set up and initialize the form.
      void showBottomNavigation()
      Shows the bottom navigation bar.
      protected void updateBottomNavigationButtons()  
      • Methods inherited from class android.widget.LinearLayout

        checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getBaseline, getBaselineAlignedChildIndex, getDividerDrawable, getDividerPadding, getGravity, getOrientation, getShowDividers, getWeightSum, isBaselineAligned, isMeasureWithLargestChildEnabled, onDraw, onLayout, onMeasure, onRtlPropertiesChanged, setBaselineAligned, setBaselineAlignedChildIndex, setDividerDrawable, setDividerPadding, setGravity, setHorizontalGravity, setMeasureWithLargestChildEnabled, setOrientation, setShowDividers, setVerticalGravity, setWeightSum, shouldDelayChildPressedState
      • Methods inherited from class android.view.ViewGroup

        addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addStatesFromChildren, addTouchables, addView, addView, addView, addView, addView, addViewInLayout, addViewInLayout, attachLayoutAnimationParameters, attachViewToParent, bringChildToFront, canAnimate, childDrawableStateChanged, childHasTransientStateChanged, cleanupLayoutState, clearChildFocus, clearDisappearingChildren, clearFocus, debug, detachAllViewsFromParent, detachViewFromParent, detachViewFromParent, detachViewsFromParent, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchScrollCaptureSearch, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, getChildDrawingOrder, getChildDrawingOrder, getChildMeasureSpec, getChildStaticTransformation, getChildVisibleRect, getClipChildren, getClipToPadding, getDescendantFocusability, getFocusedChild, getLayoutAnimation, getLayoutAnimationListener, getLayoutMode, getLayoutTransition, getNestedScrollAxes, getOverlay, getPersistentDrawingCache, getTouchscreenBlocksFocus, hasFocus, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isLayoutSuppressed, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onAttachedToWindow, onCreateDrawableState, onDescendantInvalidated, onInterceptHoverEvent, onInterceptTouchEvent, onNestedFling, onNestedPreFling, onNestedPrePerformAccessibilityAction, onNestedPreScroll, onNestedScroll, onNestedScrollAccepted, onRequestFocusInDescendants, onRequestSendAccessibilityEvent, onResolvePointerIcon, onStartNestedScroll, onStopNestedScroll, onViewAdded, onViewRemoved, recomputeViewAttributes, removeAllViews, removeAllViewsInLayout, removeDetachedView, removeView, removeViewAt, removeViewInLayout, removeViews, removeViewsInLayout, requestChildFocus, requestChildRectangleOnScreen, requestDisallowInterceptTouchEvent, requestFocus, requestSendAccessibilityEvent, requestTransparentRegion, restoreDefaultFocus, scheduleLayoutAnimation, setAddStatesFromChildren, setAlwaysDrawnWithCacheEnabled, setAnimationCacheEnabled, setChildrenDrawingCacheEnabled, setChildrenDrawingOrderEnabled, setChildrenDrawnWithCacheEnabled, setClipChildren, setClipToPadding, setDescendantFocusability, setLayoutAnimation, setLayoutAnimationListener, setLayoutMode, setLayoutTransition, setMotionEventSplittingEnabled, setOnHierarchyChangeListener, setPersistentDrawingCache, setStaticTransformationsEnabled, setTouchscreenBlocksFocus, setTransitionGroup, setWindowInsetsAnimationCallback, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, suppressLayout, updateViewLayout
      • Methods inherited from class android.view.View

        addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, animate, announceForAccessibility, autofill, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, checkInputConnectionProxy, clearAnimation, clearViewTranslationCallback, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeScroll, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateDisplayHash, generateViewId, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTranslationResponse, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isForceDarkAllowed, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isImportantForContentCapture, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onConfigurationChanged, onCreateContextMenu, onCreateInputConnection, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, onDisplayHint, onDragEvent, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishTemporaryDetach, onFocusChanged, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onReceiveContent, onScreenStateChanged, onScrollCaptureSearch, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, performReceiveContent, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAllowClickWhenDisabled, setAlpha, setAnimation, setAnimationMatrix, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForeground, setForegroundGravity, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnReceiveContentListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRenderEffect, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setViewTranslationCallback, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDraw
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface android.view.ViewParent

        canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows, requestLayout
    • Constructor Detail

      • VerticalStepperFormView

        public VerticalStepperFormView​(android.content.Context context)
      • VerticalStepperFormView

        public VerticalStepperFormView​(android.content.Context context,
                                       android.util.AttributeSet attrs)
      • VerticalStepperFormView

        public VerticalStepperFormView​(android.content.Context context,
                                       android.util.AttributeSet attrs,
                                       int defStyleAttr)
    • Method Detail

      • setup

        public Builder setup​(StepperFormListener stepperFormListener,
                             Step<?>... steps)
        Gets an instance of the builder that will be used to set up and initialize the form.
        Parameters:
        stepperFormListener - The listener for the stepper form events.
        steps - An array with the steps that will be displayed in the form.
        Returns:
        An instance of the stepper form builder. Use it to configure and initialize the form.
      • setup

        public Builder setup​(StepperFormListener stepperFormListener,
                             java.util.List<Step<?>> steps)
        Gets an instance of the builder that will be used to set up and initialize the form.
        Parameters:
        stepperFormListener - The listener for the stepper form events.
        steps - A list with the steps that will be displayed in the form.
        Returns:
        An instance of the stepper form builder. Use it to configure and initialize the form.
      • markOpenStepAsCompletedOrUncompleted

        public boolean markOpenStepAsCompletedOrUncompleted​(boolean useAnimations)
        Marks the currently open step as completed or uncompleted depending on whether the step data is valid or not.
        Parameters:
        useAnimations - True to animate the changes in the views, false to not.
        Returns:
        True if the step was found and marked as completed; false otherwise.
      • markStepAsCompletedOrUncompleted

        public boolean markStepAsCompletedOrUncompleted​(int stepPosition,
                                                        boolean useAnimations)
        Marks the specified step as completed or uncompleted depending on whether the step data is valid or not.
        Parameters:
        stepPosition - The step position.
        useAnimations - True to animate the changes in the views, false to not.
        Returns:
        True if the step was found and marked as completed; false otherwise.
      • markOpenStepAsCompleted

        public void markOpenStepAsCompleted​(boolean useAnimations)
        Marks the currently open step as completed.
        Parameters:
        useAnimations - True to animate the changes in the views, false to not.
      • markStepAsCompleted

        public void markStepAsCompleted​(int stepPosition,
                                        boolean useAnimations)
        Marks the specified step as completed.
        Parameters:
        stepPosition - The step position.
        useAnimations - True to animate the changes in the views, false to not.
      • markOpenStepAsUncompleted

        public void markOpenStepAsUncompleted​(boolean useAnimations,
                                              java.lang.String errorMessage)
        Marks the currently open step as uncompleted.
        Parameters:
        errorMessage - The error message.
        useAnimations - True to animate the changes in the views, false to not.
      • markStepAsUncompleted

        public void markStepAsUncompleted​(int stepPosition,
                                          java.lang.String errorMessage,
                                          boolean useAnimations)
        Marks the specified step as uncompleted.
        Parameters:
        stepPosition - The step position.
        errorMessage - The error message.
        useAnimations - True to animate the changes in the views, false to not.
      • isOpenStepCompleted

        public boolean isOpenStepCompleted()
        Determines whether the open step is marked as completed or not.
        Returns:
        True if the open step is currently marked as completed; false otherwise.
      • isStepCompleted

        public boolean isStepCompleted​(int stepPosition)
        Determines whether the specified step is marked as completed or not.
        Parameters:
        stepPosition - The step position.
        Returns:
        True if the step is currently marked as completed; false otherwise.
      • isAnyStepCompleted

        public boolean isAnyStepCompleted()
        Determines whether there is at least one step marked as completed.
        Returns:
        True if at least one step has been marked as completed; false otherwise.
      • areAllPreviousStepsCompleted

        public boolean areAllPreviousStepsCompleted​(int stepPosition)
        Determines whether all the steps previous to the specified one are currently marked as completed.
        Parameters:
        stepPosition - The step position.
        Returns:
        True if all the steps previous to the specified one are marked as completed; false otherwise.
      • areAllStepsCompleted

        public boolean areAllStepsCompleted()
        Determines whether all the steps are currently marked as completed.
        Returns:
        True if all the steps are marked as completed; false otherwise.
      • isFormCompleted

        public boolean isFormCompleted()
        Determines whether the form has already been completed or cancelled. Please note that this could return false even if all the steps are completed (for example, if the user has filled in all the required data but hasn't submitted the form yet).
        Returns:
        True if the form has been completed or cancelled; false otherwise.
      • goToNextStep

        public boolean goToNextStep​(boolean useAnimations)
        If possible, goes to the step that is positioned after the currently open one, closing the current one and opening the next one. Please note that, unless allowNonLinearNavigation is set to true, it will only be possible to navigate to a certain step if all the previous ones are marked as completed.
        Parameters:
        useAnimations - Indicates whether or not the affected steps will be opened/closed using animations.
        Returns:
        True if the navigation to the step was performed; false otherwise.
      • goToPreviousStep

        public boolean goToPreviousStep​(boolean useAnimations)
        If possible, goes to the step that is positioned before the currently open one, closing the current one and opening the previous one. Please note that, unless allowNonLinearNavigation is set to true, it will only be possible to navigate to a certain step if all the previous ones are marked as completed.
        Parameters:
        useAnimations - Indicates whether or not the affected steps will be opened/closed using animations.
        Returns:
        True if the navigation to the step was performed; false otherwise.
      • goToStep

        public boolean goToStep​(int stepPosition,
                                boolean useAnimations)
        If possible, goes to the specified step, closing the currently open one and opening the target one. Please note that, unless allowNonLinearNavigation is set to true, it will only be possible to navigate to a certain step if all the previous ones are marked as completed. In case the navigation is possible and the specified position to go to is the last one + 1, the form will attempt to complete.
        Parameters:
        stepPosition - The step position to go to. If it is the next one to the actual last one, the form will attempt to complete.
        useAnimations - Indicates whether or not the affected steps will be opened/closed using animations.
        Returns:
        True if the navigation to the step was performed; false otherwise.
      • getOpenStepPosition

        public int getOpenStepPosition()
        Gets the position of the currently open step.
        Returns:
        The position of the currently open step, counting from 0. -1 if not found.
      • getOpenStep

        public Step<?> getOpenStep()
        Gets the currently open step.
        Returns:
        The currently open step, or null if not found.
      • getStepContentLayout

        public android.view.View getStepContentLayout​(int stepPosition)
        Gets the content layout of the specified step (i.e., the layout which was provided at start to setup the step).
        Parameters:
        stepPosition - The step position.
        Returns:
        If found, the layout. If not, null.
      • showBottomNavigation

        public void showBottomNavigation()
        Shows the bottom navigation bar.
      • hideBottomNavigation

        public void hideBottomNavigation()
        Hides the bottom navigation bar.
      • scrollToStepIfNecessary

        public void scrollToStepIfNecessary​(int stepPosition,
                                            boolean smoothScroll)
        Scrolls to the top of the specified step, but only in case its content is not visible.
        Parameters:
        stepPosition - The step position.
        smoothScroll - Determines whether the scrolling should be smooth or abrupt.
      • scrollToOpenStepIfNecessary

        public void scrollToOpenStepIfNecessary​(boolean smoothScroll)
        Scrolls to the top of the currently open step, but only in case its content is not visible.
        Parameters:
        smoothScroll - Determines whether the scrolling should be smooth or abrupt.
      • completeForm

        public void completeForm()
        If all the steps are currently marked as completed, completes the form, disabling the step navigation and the button(s) of the last step, and invoking onCompletedForm() on the listener. To revert these changes (for example, because saving or sending the data has failed and you want the form to go back to normal so the user can use it), call cancelFormCompletionOrCancellationAttempt().
      • cancelForm

        public void cancelForm()
        Cancels the form, disabling the step navigation and the button(s) of the currently open step, and invoking onCancelledForm() on the listener. To revert these changes (for example, because the user has dismissed the cancellation and you want the form to go back to normal), call cancelFormCompletionOrCancellationAttempt().
      • cancelFormCompletionOrCancellationAttempt

        public void cancelFormCompletionOrCancellationAttempt()
        To be used after a failed form completion attempt or after a dismissed cancellation attempt, this method re-activates the navigation to other steps and re-enables the button(s) of the currently open step. Useful when saving the form data fails and you want to allow the user to use the form again in order to re-send the data.
      • refreshFormProgress

        public int refreshFormProgress()
        Refreshes the progress bar of the bottom navigation depending on the number of steps marked as completed, returning the number of completed steps.
        Returns:
        The number of steps that are currently marked as completed.
      • addStep

        public boolean addStep​(int index,
                               Step<?> stepToAdd)
        Adds a step to the form in the specified position.
        Parameters:
        index - The index where the step will be added.
        stepToAdd - The step to add.
        Returns:
        True if the step was added successfully; false otherwise.
      • removeStep

        public boolean removeStep​(int index)
        Removes the step that is placed at the specified position.
        Parameters:
        index - The index where the step to delete is.
        Returns:
        True if the step was deleted successfully; false otherwise.
      • getTotalNumberOfSteps

        public int getTotalNumberOfSteps()
        Gets the total number of steps of the form.
        Returns:
        The total number of steps, including the confirmation step, if any.
      • getStepPosition

        public int getStepPosition​(Step<?> step)
        Gets the position of the specified step within the list of steps of the form.
        Parameters:
        step - The step to find the position of.
        Returns:
        The position of the step, or -1 if the step is not found.
      • getStepLayoutResourceId

        @LayoutRes
        protected int getStepLayoutResourceId​(int position,
                                              boolean isLast)
      • updateBottomNavigationButtons

        protected void updateBottomNavigationButtons()
      • disablePreviousButtonInBottomNavigation

        protected void disablePreviousButtonInBottomNavigation()
      • enablePreviousButtonInBottomNavigation

        protected void enablePreviousButtonInBottomNavigation()
      • disableNextButtonInBottomNavigation

        protected void disableNextButtonInBottomNavigation()
      • enableNextButtonInBottomNavigation

        protected void enableNextButtonInBottomNavigation()
      • onFinishInflate

        protected void onFinishInflate()
        Overrides:
        onFinishInflate in class android.view.View
      • onDetachedFromWindow

        protected void onDetachedFromWindow()
        Overrides:
        onDetachedFromWindow in class android.view.ViewGroup
      • onSaveInstanceState

        public android.os.Parcelable onSaveInstanceState()
        Overrides:
        onSaveInstanceState in class android.view.View
      • onRestoreInstanceState

        public void onRestoreInstanceState​(android.os.Parcelable state)
        Overrides:
        onRestoreInstanceState in class android.view.View