SliceView

public class SliceView
extends ViewGroup implements Observer<Slice>, View.OnClickListener

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ androidx.slice.widget.SliceView


A view for displaying Slices.

A slice is a piece of app content and actions that can be surfaced outside of the app it originates from. SliceView is able to interpret the structure and contents of a slice and display it. This structure is defined by the app providing the slice when the slice is constructed with a TemplateSliceBuilder.

SliceView is able to display slices in a couple of different modes via .

  • Small: The small format has a restricted height and display top-level information and actions from the slice.
  • Large: The large format displays as much of the slice as it can based on the space provided for SliceView, if the slice overflows the space SliceView will scroll the content if scrolling has been enabled on SliceView, .
  • Shortcut: A shortcut shows minimal information and is presented as a tappable icon representing the main content or action associated with the slice.

Slices can contain dynamic content that may update due to user interaction or a change in the data being displayed in the slice. SliceView can be configured to listen for these updates easily using SliceLiveData. Example usage:

 SliceView v = new SliceView(getContext());
 v.setMode(desiredMode);
 LiveData liveData = SliceLiveData.fromUri(sliceUri);
 liveData.observe(lifecycleOwner, v);
 

SliceView supports various style options, see SliceView Attributes.

Summary

Nested classes

interface SliceView.OnSliceActionListener

Implement this interface to be notified of interactions with the slice displayed in this view. 

Constants

int MODE_LARGE

Mode indicating this slice should be presented in large format, as much or all of the slice contents are shown.

int MODE_SHORTCUT

Mode indicating this slice should be presented as a tappable icon.

int MODE_SMALL

Mode indicating this slice should be presented in small format, only top-level information and actions from the slice are shown.

Inherited constants

Inherited fields

Public constructors

SliceView(Context context)
SliceView(Context context, AttributeSet attrs)
SliceView(Context context, AttributeSet attrs, int defStyleAttr)
SliceView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

int getMode()
Slice getSlice()
List<SliceAction> getSliceActions()

Returns the slice actions presented in this view.

boolean isScrollable()

Whether this view allow scrollable content when presenting in MODE_LARGE.

void onChanged(Slice slice)
void onClick(View v)
boolean onInterceptTouchEvent(MotionEvent ev)
boolean onTouchEvent(MotionEvent ev)
void setAccentColor(int accentColor)

Contents of a slice such as icons, text, and controls (e.g.

void setMode(int mode)

Set the mode this view should present in.

void setOnClickListener(View.OnClickListener listener)
void setOnLongClickListener(View.OnLongClickListener listener)
void setOnSliceActionListener(SliceView.OnSliceActionListener observer)

Sets the listener to notify when an interaction event occurs on the view.

void setScrollable(boolean isScrollable)

Set whether this view should allow scrollable content when presenting in MODE_LARGE.

void setSlice(Slice slice)

Populates this view to the provided Slice.

void setSliceActions(List<SliceAction> newActions)

Sets the slice actions to display for the slice contained in this view.

Protected methods

void onAttachedToWindow()
void onDetachedFromWindow()
void onLayout(boolean changed, int l, int t, int r, int b)
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
void onVisibilityChanged(View changedView, int visibility)
void onWindowVisibilityChanged(int visibility)

Inherited methods

Constants

MODE_LARGE

public static final int MODE_LARGE

Mode indicating this slice should be presented in large format, as much or all of the slice contents are shown.

Constant Value: 2 (0x00000002)

MODE_SHORTCUT

public static final int MODE_SHORTCUT

Mode indicating this slice should be presented as a tappable icon.

Constant Value: 3 (0x00000003)

MODE_SMALL

public static final int MODE_SMALL

Mode indicating this slice should be presented in small format, only top-level information and actions from the slice are shown.

Constant Value: 1 (0x00000001)

Public constructors

SliceView

public SliceView (Context context)

Parameters
context Context

SliceView

public SliceView (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

SliceView

public SliceView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

SliceView

public SliceView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

defStyleRes int

Public methods

getMode

public int getMode ()

Returns
int the mode this view is presenting in.

getSlice

public Slice getSlice ()

Returns
Slice the slice being used to populate this view.

getSliceActions

public List<SliceAction> getSliceActions ()

Returns the slice actions presented in this view.

Note that these may be different from SliceMetadata.getSliceActions() if the actions set on the view have been adjusted using setSliceActions(List).

Returns
List<SliceAction>

isScrollable

public boolean isScrollable ()

Whether this view allow scrollable content when presenting in MODE_LARGE.

Returns
boolean

onChanged

public void onChanged (Slice slice)

Parameters
slice Slice

onClick

public void onClick (View v)

Parameters
v View

onInterceptTouchEvent

public boolean onInterceptTouchEvent (MotionEvent ev)

Parameters
ev MotionEvent

Returns
boolean

onTouchEvent

public boolean onTouchEvent (MotionEvent ev)

Parameters
ev MotionEvent

Returns
boolean

setAccentColor

public void setAccentColor (int accentColor)

Contents of a slice such as icons, text, and controls (e.g. toggle) can be tinted. Normally a color for tinting will be provided by the slice. Using this method will override the slice-provided color information and instead tint elements with the color set here.

Parameters
accentColor int: the color to use for tinting contents of this view.

setMode

public void setMode (int mode)

Set the mode this view should present in.

Parameters
mode int

setOnClickListener

public void setOnClickListener (View.OnClickListener listener)

Parameters
listener View.OnClickListener

setOnLongClickListener

public void setOnLongClickListener (View.OnLongClickListener listener)

Parameters
listener View.OnLongClickListener

setOnSliceActionListener

public void setOnSliceActionListener (SliceView.OnSliceActionListener observer)

Sets the listener to notify when an interaction event occurs on the view.

Parameters
observer SliceView.OnSliceActionListener

See also:

setScrollable

public void setScrollable (boolean isScrollable)

Set whether this view should allow scrollable content when presenting in MODE_LARGE.

Parameters
isScrollable boolean

setSlice

public void setSlice (Slice slice)

Populates this view to the provided Slice. This will not update automatically if the slice content changes, for live content see SliceLiveData.

Parameters
slice Slice

setSliceActions

public void setSliceActions (List<SliceAction> newActions)

Sets the slice actions to display for the slice contained in this view. Normally SliceView will automatically show actions, however, it is possible to reorder or omit actions on the view using this method. This is generally discouraged.

It is required that the slice be set on this view before actions can be set, otherwise this will throw IllegalStateException. If any of the actions supplied are not available for the slice set on this view (i.e. the action is not returned by SliceMetadata.getSliceActions() this will throw IllegalArgumentException.

Parameters
newActions List

Protected methods

onAttachedToWindow

protected void onAttachedToWindow ()

onDetachedFromWindow

protected void onDetachedFromWindow ()

onLayout

protected void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

Parameters
changed boolean

l int

t int

r int

b int

onMeasure

protected void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

Parameters
widthMeasureSpec int

heightMeasureSpec int

onVisibilityChanged

protected void onVisibilityChanged (View changedView, 
                int visibility)

Parameters
changedView View

visibility int

onWindowVisibilityChanged

protected void onWindowVisibilityChanged (int visibility)

Parameters
visibility int