Class VerticalStepperFormView
- java.lang.Object
-
- android.view.View
-
- android.view.ViewGroup
-
- android.widget.LinearLayout
-
- ernestoyaquello.com.verticalstepperform.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.LinearLayoutCustom 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
-
-
Constructor Summary
Constructors Constructor Description VerticalStepperFormView(android.content.Context context)VerticalStepperFormView(android.content.Context context, android.util.AttributeSet attrs)VerticalStepperFormView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddStep(int index, Step<?> stepToAdd)Adds a step to the form in the specified position.booleanareAllPreviousStepsCompleted(int stepPosition)Determines whether all the steps previous to the specified one are currently marked as completed.booleanareAllStepsCompleted()Determines whether all the steps are currently marked as completed.voidcancelForm()Cancels the form, disabling the step navigation and the button(s) of the currently open step, and invoking onCancelledForm() on the listener.voidcancelFormCompletionOrCancellationAttempt()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.voidcompleteForm()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 voiddisableNextButtonInBottomNavigation()protected voiddisablePreviousButtonInBottomNavigation()protected voidenableNextButtonInBottomNavigation()protected voidenablePreviousButtonInBottomNavigation()Step<?>getOpenStep()Gets the currently open step.intgetOpenStepPosition()Gets the position of the currently open step.android.view.ViewgetStepContentLayout(int stepPosition)Gets the content layout of the specified step (i.e., the layout which was provided at start to setup the step).protected intgetStepLayoutResourceId(int position, boolean isLast)intgetStepPosition(Step<?> step)Gets the position of the specified step within the list of steps of the form.intgetTotalNumberOfSteps()Gets the total number of steps of the form.booleangoToNextStep(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.booleangoToPreviousStep(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.booleangoToStep(int stepPosition, boolean useAnimations)If possible, goes to the specified step, closing the currently open one and opening the target one.voidhideBottomNavigation()Hides the bottom navigation bar.booleanisAnyStepCompleted()Determines whether there is at least one step marked as completed.booleanisFormCompleted()Determines whether the form has already been completed or cancelled.booleanisOpenStepCompleted()Determines whether the open step is marked as completed or not.booleanisStepCompleted(int stepPosition)Determines whether the specified step is marked as completed or not.voidmarkOpenStepAsCompleted(boolean useAnimations)Marks the currently open step as completed.booleanmarkOpenStepAsCompletedOrUncompleted(boolean useAnimations)Marks the currently open step as completed or uncompleted depending on whether the step data is valid or not.voidmarkOpenStepAsUncompleted(boolean useAnimations, java.lang.String errorMessage)Marks the currently open step as uncompleted.voidmarkStepAsCompleted(int stepPosition, boolean useAnimations)Marks the specified step as completed.booleanmarkStepAsCompletedOrUncompleted(int stepPosition, boolean useAnimations)Marks the specified step as completed or uncompleted depending on whether the step data is valid or not.voidmarkStepAsUncompleted(int stepPosition, java.lang.String errorMessage, boolean useAnimations)Marks the specified step as uncompleted.protected voidonDetachedFromWindow()protected voidonFinishInflate()voidonRestoreInstanceState(android.os.Parcelable state)android.os.ParcelableonSaveInstanceState()intrefreshFormProgress()Refreshes the progress bar of the bottom navigation depending on the number of steps marked as completed, returning the number of completed steps.booleanremoveStep(int index)Removes the step that is placed at the specified position.voidscrollToOpenStepIfNecessary(boolean smoothScroll)Scrolls to the top of the currently open step, but only in case its content is not visible.voidscrollToStepIfNecessary(int stepPosition, boolean smoothScroll)Scrolls to the top of the specified step, but only in case its content is not visible.Buildersetup(StepperFormListener stepperFormListener, Step<?>... steps)Gets an instance of the builder that will be used to set up and initialize the form.Buildersetup(StepperFormListener stepperFormListener, java.util.List<Step<?>> steps)Gets an instance of the builder that will be used to set up and initialize the form.voidshowBottomNavigation()Shows the bottom navigation bar.protected voidupdateBottomNavigationButtons()-
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:
onFinishInflatein classandroid.view.View
-
onDetachedFromWindow
protected void onDetachedFromWindow()
- Overrides:
onDetachedFromWindowin classandroid.view.ViewGroup
-
onSaveInstanceState
public android.os.Parcelable onSaveInstanceState()
- Overrides:
onSaveInstanceStatein classandroid.view.View
-
onRestoreInstanceState
public void onRestoreInstanceState(android.os.Parcelable state)
- Overrides:
onRestoreInstanceStatein classandroid.view.View
-
-