SlidingPaneLayout


public class SlidingPaneLayout extends ViewGroup implements Openable


SlidingPaneLayout provides a horizontal, multi-pane layout for use at the top level of a UI. A left (or start) pane is treated as a content list or browser, subordinate to a primary detail view for displaying content.

Child views overlap if their combined width exceeds the available width in the SlidingPaneLayout. Each of child views is expand out to fill the available width in the SlidingPaneLayout. When this occurs, the user may slide the topmost view out of the way by dragging it, and dragging back it from the very edge.

Thanks to this sliding behavior, SlidingPaneLayout may be suitable for creating layouts that can smoothly adapt across many different screen sizes, expanding out fully on larger screens and collapsing on smaller screens.

SlidingPaneLayout is distinct from a navigation drawer as described in the design guide and should not be used in the same scenarios. SlidingPaneLayout should be thought of only as a way to allow a two-pane layout normally used on larger screens to adapt to smaller screens in a natural way. The interaction patterns expressed by SlidingPaneLayout imply a physicality and direct information hierarchy between panes that does not necessarily exist in a scenario where a navigation drawer should be used instead.

Appropriate uses of SlidingPaneLayout include pairings of panes such as a contact list and subordinate interactions with those contacts, or an email thread list with the content pane displaying the contents of the selected thread. Inappropriate uses of SlidingPaneLayout include switching between disparate functions of your app, such as jumping from a social stream view to a view of your personal profile - cases such as this should use the navigation drawer pattern instead. (DrawerLayout implements this pattern.)

Like LinearLayout, SlidingPaneLayout supports the use of the layout parameter layout_weight on child views to determine how to divide leftover space after measurement is complete. It is only relevant for width. When views do not overlap weight behaves as it does in a LinearLayout.

Summary

Nested types

Listener for monitoring events about sliding panes.

No-op stubs for PanelSlideListener.

Constants

static final int

The user cannot swipe between list and detail panes, though the app can open or close the detail pane programmatically.

static final int

The detail pane is locked in a closed position.

static final int

The detail pane is locked in an open position.

static final int

User can freely swipe between list and detail panes.

Public constructors

SlidingPaneLayout(
    @NonNull Context context,
    @Nullable AttributeSet attrs,
    int defStyle
)

Public methods

void

Adds the specified listener to the list of listeners that will be notified of panel slide events.

void
addView(
    @NonNull View child,
    int index,
    @Nullable ViewGroup.LayoutParams params
)
boolean

This method is deprecated.

Renamed to isSlideable - this method is going away soon!

void

Close the detail view if it is currently slideable.

boolean

Close the detail view if it is currently slideable.

void
void
ViewGroup.LayoutParams
@ColorInt int

This method is deprecated.

This field is no longer populated by SlidingPaneLayout

final int

Get the lock mode used to control over the swipe behavior.

@Px int
@ColorInt int

This method is deprecated.

This field is no longer populated by SlidingPaneLayout.

boolean

Check if the detail view is completely open.

boolean

Check if both the list and detail view panes in this layout can fully fit side-by-side.

boolean
boolean
void

Open the detail view if it is currently slideable.

boolean

Open the detail view if it is currently slideable.

void

Removes the specified listener from the list of listeners that will be notified of panel slide events.

void
void
requestChildFocus(View child, View focused)
void

This method is deprecated.

SlidingPaneLayout no longer uses this field.

final void
setLockMode(int lockMode)

Set the lock mode that controls how the user can swipe between the panes.

void

This method is deprecated.

Use addPanelSlideListener

void
setParallaxDistance(@Px int parallaxBy)

Set a distance to parallax the lower pane by when the upper pane is in its fully closed state.

void

This method is deprecated.

Renamed to setShadowDrawableLeft to support LTR (left to right language) and setShadowDrawableRight to support RTL (right to left language) during opening/closing.

void

Set a drawable to use as a shadow cast by the right pane onto the left pane during opening/closing.

void

Set a drawable to use as a shadow cast by the left pane onto the right pane during opening/closing to support right to left language.

void

This method is deprecated.

Renamed to setShadowResourceLeft to support LTR (left to right language) and setShadowResourceRight to support RTL (right to left language) during opening/closing.

void

Set a drawable to use as a shadow cast by the right pane onto the left pane during opening/closing.

void

Set a drawable to use as a shadow cast by the left pane onto the right pane during opening/closing to support right to left language.

void

This method is deprecated.

SlidingPaneLayout no longer uses this field.

void

This method is deprecated.

Renamed to closePane - this method is going away soon!

void

This method is deprecated.

Renamed to openPane - this method is going away soon!

Protected methods

boolean
canScroll(View v, boolean checkV, int dx, int x, int y)

Tests scrollability within child views of v given a delta of dx.

boolean
boolean
drawChild(Canvas canvas, View child, long drawingTime)
ViewGroup.LayoutParams
ViewGroup.LayoutParams
void
void
void
onLayout(boolean changed, int l, int t, int r, int b)
void
onMeasure(int widthMeasureSpec, int heightMeasureSpec)
void
Parcelable
void
onSizeChanged(int w, int h, int oldw, int oldh)

Inherited Constants

From android.view.View
static final int
static final int
static final int
static final int
static final int
static final int
static final Property<ViewFloat>
static final int
static final String
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate"
static final String
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay"
static final String
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth"
static final String
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear"
static final String
static final String
AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode"
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int
static final int
static final int
static final int
static final int
static final int
static final int[]
static final int[]
static final int[]
static final int[]
static final int
static final int
static final int
static final int
static final int
static final int
static final int
GONE = 8
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
KEEP_SCREEN_ON = 67108864
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
NO_ID = -1
static final int
static final int
static final int
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final int[]
static final float
static final float
static final float
static final float
static final float
static final Property<ViewFloat>
static final Property<ViewFloat>
static final Property<ViewFloat>
static final Property<ViewFloat>
static final Property<ViewFloat>
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int[]
static final int[]
static final int
static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final Property<ViewFloat>
static final Property<ViewFloat>
static final Property<ViewFloat>
static final String
VIEW_LOG_TAG = "View"
static final int
static final int[]
static final Property<ViewFloat>
static final Property<ViewFloat>
static final Property<ViewFloat>
From android.view.ViewGroup
static final int
static final int
static final int
static final int
static final int
static final int
static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.

static final int

This field is deprecated.