belongs to Maven artifact com.android.support:leanback-v17:28.0.0-alpha1
A GuidedStepSupportFragment is used to guide the user through a decision or series of decisions. It is composed of a guidance view on the left and a view on the right containing a list of possible actions.
Clients of GuidedStepSupportFragment must create a custom subclass to attach to their Activities. This custom subclass provides the information necessary to construct the user interface and respond to user actions. At a minimum, subclasses should override:
onCreateGuidance(Bundle), to provide instructions to the user
onCreateActions(List, to provide a set of
GuidedActions the user can take
onGuidedActionClicked(GuidedAction), to respond to those actions
Clients use following helper functions to add GuidedStepSupportFragment to Activity or FragmentManager:
addAsRoot(FragmentActivity, GuidedStepSupportFragment, int), to be called during Activity onCreate, adds GuidedStepSupportFragment as the first Fragment in activity.
add(FragmentManager, GuidedStepSupportFragment, int), to add GuidedStepSupportFragment on top of existing Fragments or replacing existing GuidedStepSupportFragment when moving forward to next step.
finishGuidedStepSupportFragments()can either finish the activity or pop all GuidedStepSupportFragment from stack.
- If app chooses not to use the helper function, it is the app's responsibility to call
setUiStyle(int)to select fragment transition and remember the stack entry where it need pops to.
Theming and Stylists
GuidedStepSupportFragment delegates its visual styling to classes called stylists. The
GuidanceStylist is responsible for the left guidance view, while the
GuidedActionsStylist is responsible for the right actions view. The stylists use theme
attributes to derive values associated with the presentation, such as colors, animations, etc.
Most simple visual aspects of GuidanceStylist and GuidedActionsStylist can be customized
via theming; see their documentation for more information.
GuidedStepSupportFragments must have access to an appropriate theme in order for the stylists to
function properly. Specifically, the fragment must receive
Theme_Leanback_GuidedStep, or a theme whose parent is
is set to that theme. Themes can be provided in one of three ways:
- The simplest way is to set the theme for the host Activity to the GuidedStep theme or a theme that derives from it.
- If the Activity already has a theme and setting its parent theme is inconvenient, the
existing Activity theme can have an entry added for the attribute
LeanbackGuidedStepTheme_guidedStepTheme. If present, this theme will be used by GuidedStepSupportFragment as an overlay to the Activity's theme.
- Finally, custom subclasses of GuidedStepSupportFragment may provide a theme through the
onProvideTheme()method. This can be useful if a subclass is used across multiple Activities.
If the theme is provided in multiple ways, the onProvideTheme override has priority, followed by the Activity's theme. (Themes whose parent theme is already set to the guided step theme do not need to set the guidedStepTheme attribute; if set, it will be ignored.)
If themes do not provide enough customizability, the stylists themselves may be subclassed and
provided to the GuidedStepSupportFragment through the
onCreateActionsStylist() methods. The stylists have simple hooks so that subclasses
may override layout files; subclasses may also have more complex logic to determine styling.
GuidedStepSupportFragments can be grouped together to provide a guided sequence. GuidedStepSupportFragments
grouped as a sequence use custom animations provided by
GuidedActionsStylist (or subclasses) during transitions between steps. Clients
add(FragmentManager, GuidedStepSupportFragment) to place subsequent GuidedFragments onto the fragment stack so that
custom animations are properly configured. (Custom animations are triggered automatically when
the fragment stack is subsequently popped by any normal mechanism.)
Note: Currently GuidedStepSupportFragments grouped in this way must all be defined programmatically, rather than in XML. This restriction may be removed in the future.