From 946551e75a0401bae6a253f926710fcc4d980ca6 Mon Sep 17 00:00:00 2001 From: <> Date: Thu, 11 Jul 2024 00:38:41 +0000 Subject: [PATCH] Deployed 1f46d03 with MkDocs version: 1.6.0 --- .nojekyll | 0 404.html | 655 + alignment/index.html | 854 ++ .../-dpad-compose-focus-view-holder.html | 76 + .../get-item.html | 76 + .../index.html | 363 + .../set-content.html | 76 + .../set-focusable.html | 76 + .../set-item-state.html | 76 + .../-dpad-compose-view-holder.html | 76 + .../-dpad-compose-view-holder/get-item.html | 76 + .../-dpad-compose-view-holder/index.html | 348 + .../set-content.html | 76 + .../set-item-state.html | 76 + .../-dispose-on-recycled/index.html | 100 + .../-dispose-on-recycled/install-for.html | 76 + .../index.html | 100 + .../dpad-clickable.html | 76 + .../index.html | 148 + api/dpadrecyclerview-compose/index.html | 95 + api/dpadrecyclerview-compose/navigation.html | 422 + .../execute-for-view-holder-item-view-at.html | 76 + .../-dpad-recycler-view-actions/execute.html | 76 + .../get-item-view-bounds.html | 76 + .../get-relative-item-view-bounds.html | 76 + .../-dpad-recycler-view-actions/index.html | 280 + .../scroll-to-holder.html | 76 + .../scroll-to.html | 76 + .../select-last-position.html | 76 + .../select-position.html | 76 + .../select-sub-position.html | 76 + .../update-child-alignment.html | 76 + .../update-parent-alignment.html | 76 + .../wait-for-adapter-update.html | 76 + .../wait-for-idle-scroll.html | 76 + .../-dpad-view-action/-dpad-view-action.html | 76 + .../-dpad-view-action/get-constraints.html | 76 + .../-dpad-view-action/get-description.html | 76 + .../-dpad-view-action/index.html | 149 + .../-dpad-view-actions/clear-focus.html | 76 + .../get-relative-view-bounds.html | 76 + .../-dpad-view-actions/get-view-bounds.html | 76 + .../-dpad-view-actions/index.html | 179 + .../-dpad-view-actions/request-focus.html | 76 + .../wait-for-condition.html | 76 + .../index.html | 114 + .../-dpad-recycler-view-assertions/index.html | 115 + .../is-focused.html | 76 + .../is-selected.html | 76 + .../does-not-have-focus.html | 76 + .../-dpad-view-assertions/has-focus.html | 76 + .../-dpad-view-assertions/index.html | 145 + .../-dpad-view-assertions/is-focused.html | 76 + .../-dpad-view-assertions/is-not-focused.html | 76 + .../index.html | 114 + .../-dpad-recycler-view-matchers/index.html | 100 + .../with-descendant-of-item-view-at.html | 76 + .../index.html | 99 + .../-disable-idle-timeout-rule.html | 76 + .../-disable-idle-timeout-rule/apply.html | 76 + .../-disable-idle-timeout-rule/index.html | 119 + .../index.html | 99 + .../-key-events/back.html | 76 + .../-key-events/click.html | 76 + .../-key-events/index.html | 190 + .../-key-events/press-down.html | 76 + .../-key-events/press-key.html | 76 + .../-key-events/press-left.html | 76 + .../-key-events/press-right.html | 76 + .../-key-events/press-up.html | 76 + .../index.html | 99 + api/dpadrecyclerview-testing/index.html | 167 + api/dpadrecyclerview-testing/navigation.html | 422 + .../-view-bounds/-view-bounds.html | 76 + .../-view-bounds/as-rect.html | 76 + .../-view-bounds/bottom.html | 76 + .../-view-bounds/height.html | 76 + .../-view-bounds/index.html | 273 + .../-view-bounds/left.html | 76 + .../-view-bounds/offset-horizontal.html | 76 + .../-view-bounds/offset-vertical.html | 76 + .../-view-bounds/right.html | 76 + .../-view-bounds/set-empty.html | 76 + .../-view-bounds/to-string.html | 76 + .../-view-bounds/top.html | 76 + .../-view-bounds/width.html | 76 + .../index.html | 133 + .../offset-horizontally-by.html | 76 + .../offset-vertically-by.html | 76 + .../-i-n-v-a-l-i-d_-s-p-a-n_-i-d.html | 76 + .../-dpad-layout-params/-companion/index.html | 100 + .../-dpad-layout-params.html | 76 + .../-dpad-layout-params/alignment-anchor.html | 76 + .../-dpad-layout-params/index.html | 562 + .../-dpad-layout-params/span-group-index.html | 76 + .../-dpad-layout-params/span-index.html | 76 + .../-dpad-layout-params/span-size.html | 76 + .../-pivot-layout-manager.html | 76 + .../add-on-layout-completed-listener.html | 76 + .../add-on-view-focused-listener.html | 76 + .../add-on-view-holder-selected-listener.html | 76 + .../can-scroll-horizontally.html | 76 + .../can-scroll-vertically.html | 76 + .../check-layout-params.html | 76 + .../clear-on-layout-completed-listeners.html | 76 + .../clear-on-view-focused-listeners.html | 76 + ...ear-on-view-holder-selected-listeners.html | 76 + .../collect-adjacent-prefetch-positions.html | 76 + .../collect-initial-prefetch-positions.html | 76 + .../compute-horizontal-scroll-extent.html | 76 + .../compute-horizontal-scroll-offset.html | 76 + .../compute-horizontal-scroll-range.html | 76 + .../compute-scroll-vector-for-position.html | 76 + .../compute-vertical-scroll-extent.html | 76 + .../compute-vertical-scroll-offset.html | 76 + .../compute-vertical-scroll-range.html | 76 + ...irst-completely-visible-item-position.html | 76 + .../find-first-visible-item-position.html | 76 + ...last-completely-visible-item-position.html | 76 + .../find-last-visible-item-position.html | 76 + .../generate-default-layout-params.html | 76 + .../generate-layout-params.html | 76 + .../get-child-alignment.html | 76 + .../get-column-count-for-accessibility.html | 76 + .../get-current-sub-positions.html | 76 + .../get-focusable-direction.html | 76 + .../get-loop-direction.html | 76 + .../get-max-pending-alignments.html | 76 + .../get-max-pending-moves.html | 76 + .../get-parent-alignment.html | 76 + .../get-row-count-for-accessibility.html | 76 + .../get-selected-position.html | 76 + .../get-selected-sub-position.html | 76 + .../get-smooth-scroll-speed-factor.html | 76 + .../-pivot-layout-manager/get-span-count.html | 76 + .../get-span-size-lookup.html | 76 + .../-pivot-layout-manager/index.html | 2834 ++++ .../is-auto-measure-enabled.html | 76 + .../is-focus-search-disabled.html | 76 + .../is-layout-enabled.html | 76 + .../is-layout-reversed.html | 76 + .../on-adapter-changed.html | 76 + .../on-add-focusables.html | 76 + .../on-attached-to-window.html | 76 + .../on-detached-from-window.html | 76 + ...lize-accessibility-node-info-for-item.html | 76 + ...on-initialize-accessibility-node-info.html | 76 + .../on-intercept-focus-search.html | 76 + .../-pivot-layout-manager/on-items-added.html | 76 + .../on-items-changed.html | 76 + .../-pivot-layout-manager/on-items-moved.html | 76 + .../on-items-removed.html | 76 + .../on-layout-children.html | 76 + .../on-layout-completed.html | 76 + .../on-request-child-focus.html | 76 + .../on-request-focus-in-descendants.html | 76 + .../on-restore-instance-state.html | 76 + .../on-save-instance-state.html | 76 + .../perform-accessibility-action.html | 76 + .../prepare-for-drop.html | 76 + .../remove-on-layout-completed-listener.html | 76 + .../remove-on-view-focused-listener.html | 76 + ...move-on-view-holder-selected-listener.html | 76 + .../request-child-rectangle-on-screen.html | 76 + .../scroll-horizontally-by.html | 76 + .../scroll-to-position.html | 76 + .../scroll-vertically-by.html | 76 + .../select-position.html | 76 + .../select-sub-position.html | 76 + .../-pivot-layout-manager/set-alignments.html | 76 + .../set-child-alignment.html | 76 + .../set-children-drawing-order-enabled.html | 76 + .../set-extra-layout-space-strategy.html | 76 + .../set-focus-out-allowed.html | 76 + .../set-focus-out-side-allowed.html | 76 + .../set-focus-search-disabled.html | 76 + ...ocus-search-enabled-during-animations.html | 76 + .../set-focusable-direction.html | 76 + .../-pivot-layout-manager/set-gravity.html | 76 + .../set-layout-enabled.html | 76 + .../set-loop-direction.html | 76 + .../set-max-pending-alignments.html | 76 + .../set-max-pending-moves.html | 76 + .../set-on-child-laid-out-listener.html | 76 + .../set-orientation.html | 76 + .../set-parent-alignment.html | 76 + .../set-recycle-children-on-detach.html | 76 + .../set-reverse-layout.html | 76 + .../set-scroll-enabled.html | 76 + .../set-smooth-focus-changes-enabled.html | 76 + .../set-smooth-scroll-speed-factor.html | 76 + .../-pivot-layout-manager/set-span-count.html | 76 + .../set-span-size-lookup.html | 76 + .../smooth-scroll-to-position.html | 76 + .../start-smooth-scroll.html | 76 + .../supports-predictive-item-animations.html | 76 + .../index.html | 114 + .../-companion/create.html | 76 + .../-companion/index.html | 100 + .../get-item-offsets.html | 76 + .../-dpad-grid-spacing-decoration/index.html | 164 + .../-companion/create.html | 76 + .../-companion/index.html | 100 + .../get-item-offsets.html | 76 + .../index.html | 164 + .../-dpad-spacing-decoration.html | 76 + .../get-item-offsets.html | 76 + .../-dpad-spacing-decoration/index.html | 164 + .../set-spacing-lookup.html | 76 + .../-dpad-spacing-lookup/index.html | 100 + .../should-apply-spacing.html | 76 + .../index.html | 144 + .../-dpad-scroll-state/clear.html | 76 + .../-dpad-scroll-state/index.html | 130 + .../-dpad-scroll-state/restore.html | 76 + .../-dpad-scroll-state/save.html | 76 + .../-dpad-state-registry.html | 76 + .../get-scroll-state.html | 76 + .../get-view-holder-state.html | 76 + .../-dpad-state-registry/index.html | 149 + .../set-save-instance-state-enabled.html | 76 + .../-dpad-view-holder-state/clear.html | 76 + .../-dpad-view-holder-state/index.html | 130 + .../restore-state.html | 76 + .../-dpad-view-holder-state/save-state.html | 76 + .../index.html | 129 + .../-c-r-e-a-t-o-r/create-from-parcel.html | 76 + .../-c-r-e-a-t-o-r/index.html | 115 + .../-c-r-e-a-t-o-r/new-array.html | 76 + .../-child-alignment/-child-alignment.html | 76 + .../-child-alignment/align-to-baseline.html | 76 + .../-child-alignment/describe-contents.html | 76 + .../-child-alignment/fraction.html | 76 + .../-child-alignment/include-padding.html | 76 + .../-child-alignment/index.html | 232 + .../-child-alignment/is-fraction-enabled.html | 76 + .../-child-alignment/offset.html | 76 + .../-child-alignment/write-to-parcel.html | 76 + .../-dpad-drag-helper/-dpad-drag-helper.html | 80 + .../-drag-adapter/get-mutable-items.html | 76 + .../-drag-adapter/index.html | 100 + .../-drag-callback/index.html | 115 + .../-drag-callback/on-drag-started.html | 76 + .../-drag-callback/on-drag-stopped.html | 76 + .../attach-to-recycler-view.html | 76 + .../detach-from-recycler-view.html | 76 + .../-dpad-drag-helper/index.html | 225 + .../-dpad-drag-helper/is-dragging.html | 76 + .../-dpad-drag-helper/start-drag.html | 76 + .../-dpad-drag-helper/stop-drag.html | 76 + .../-dpad-loop-direction/-m-a-x/index.html | 115 + .../-m-i-n_-m-a-x/index.html | 115 + .../-dpad-loop-direction/-n-o-n-e/index.html | 115 + .../-dpad-loop-direction/entries.html | 76 + .../-dpad-loop-direction/index.html | 213 + .../-dpad-loop-direction/value-of.html | 76 + .../-dpad-loop-direction/values.html | 76 + .../-dpad-recycler-view.html | 76 + .../-on-key-intercept-listener/index.html | 100 + .../on-intercept-key-event.html | 76 + .../-on-layout-completed-listener/index.html | 100 + .../on-layout-completed.html | 76 + .../-on-motion-intercept-listener/index.html | 100 + .../on-intercept-motion-event.html | 76 + .../-on-touch-intercept-listener/index.html | 100 + .../on-intercept-touch-event.html | 76 + .../-on-unhandled-key-listener/index.html | 100 + .../on-unhandled-key.html | 76 + .../config-smooth-scroll-by-duration.html | 76 + .../config-smooth-scroll-by-interpolator.html | 76 + .../-smooth-scroll-by-behavior/index.html | 115 + .../add-on-layout-completed-listener.html | 76 + .../add-on-view-focused-listener.html | 76 + .../add-on-view-holder-selected-listener.html | 76 + .../add-recycler-listener.html | 76 + .../clear-on-layout-completed-listeners.html | 76 + .../clear-on-view-focused-listeners.html | 76 + ...ear-on-view-holder-selected-listeners.html | 76 + .../dispatch-key-event.html | 76 + .../dispatch-touch-event.html | 76 + .../enable-max-edge-fading.html | 76 + .../enable-min-edge-fading.html | 76 + ...irst-completely-visible-item-position.html | 76 + .../find-first-visible-item-position.html | 76 + ...last-completely-visible-item-position.html | 76 + .../find-last-visible-item-position.html | 76 + .../-dpad-recycler-view/focus-search.html | 76 + .../get-child-alignment.html | 76 + .../get-current-sub-positions.html | 76 + .../get-focusable-direction.html | 76 + .../get-initial-prefetch-item-count.html | 76 + .../get-loop-direction.html | 76 + .../get-max-edge-fading-length.html | 76 + .../get-max-edge-fading-offset.html | 76 + .../get-min-edge-fading-length.html | 76 + .../get-min-edge-fading-offset.html | 76 + .../get-on-key-intercept-listener.html | 76 + .../get-on-motion-intercept-listener.html | 76 + .../get-on-unhandled-key-listener.html | 76 + .../-dpad-recycler-view/get-orientation.html | 76 + .../get-parent-alignment.html | 76 + .../get-selected-position.html | 76 + .../get-selected-sub-position.html | 76 + ...-smooth-scroll-max-pending-alignments.html | 76 + .../get-smooth-scroll-max-pending-moves.html | 76 + .../get-smooth-scroll-speed-factor.html | 76 + .../-dpad-recycler-view/get-span-count.html | 76 + .../get-span-size-lookup.html | 76 + .../has-overlapping-rendering.html | 76 + .../-dpad-recycler-view/index.html | 12753 ++++++++++++++++ .../is-focus-drawing-order-enabled.html | 76 + .../is-focus-search-disabled.html | 76 + .../is-item-prefetch-enabled.html | 76 + .../is-layout-enabled.html | 76 + .../is-layout-reversed.html | 76 + .../is-max-edge-fading-enabled.html | 76 + .../is-min-edge-fading-enabled.html | 76 + .../is-scroll-enabled.html | 76 + .../on-rtl-properties-changed.html | 76 + .../on-scroll-state-changed.html | 76 + .../remove-on-layout-completed-listener.html | 76 + .../remove-on-view-focused-listener.html | 76 + ...move-on-view-holder-selected-listener.html | 76 + .../-dpad-recycler-view/remove-view-at.html | 76 + .../-dpad-recycler-view/remove-view.html | 76 + .../-dpad-recycler-view/request-layout.html | 76 + .../-dpad-recycler-view/set-alignments.html | 76 + .../set-child-alignment.html | 76 + .../set-child-drawing-order-callback.html | 76 + .../set-extra-layout-space-strategy.html | 76 + .../set-fading-edge-length.html | 76 + .../set-focus-drawing-order-enabled.html | 76 + .../set-focus-out-allowed.html | 76 + .../set-focus-out-side-allowed.html | 76 + .../set-focus-search-disabled.html | 76 + ...ocus-search-enabled-during-animations.html | 76 + .../set-focusable-direction.html | 76 + .../-dpad-recycler-view/set-gravity.html | 76 + .../set-has-fixed-size.html | 76 + .../set-has-overlapping-rendering.html | 76 + .../set-initial-prefetch-item-count.html | 76 + .../set-item-animator.html | 76 + .../set-item-prefetch-enabled.html | 76 + .../set-layout-enabled.html | 76 + .../set-layout-manager.html | 76 + .../set-layout-while-scrolling-enabled.html | 76 + .../set-loop-direction.html | 76 + .../set-max-edge-fading-length.html | 76 + .../set-max-edge-fading-offset.html | 76 + .../set-min-edge-fading-length.html | 76 + .../set-min-edge-fading-offset.html | 76 + .../set-on-child-laid-out-listener.html | 76 + .../set-on-key-intercept-listener.html | 76 + .../set-on-motion-intercept-listener.html | 76 + .../set-on-touch-intercept-listener.html | 76 + .../set-on-unhandled-key-listener.html | 76 + .../-dpad-recycler-view/set-orientation.html | 76 + .../set-parent-alignment.html | 76 + .../set-recycle-children-on-detach.html | 76 + .../set-reverse-layout.html | 76 + .../set-scroll-enabled.html | 76 + .../set-selected-position-smooth.html | 76 + .../set-selected-position.html | 76 + .../set-selected-sub-position-smooth.html | 76 + .../set-selected-sub-position.html | 76 + .../set-smooth-focus-changes-enabled.html | 76 + .../set-smooth-scroll-behavior.html | 76 + ...-smooth-scroll-max-pending-alignments.html | 76 + .../set-smooth-scroll-max-pending-moves.html | 76 + .../set-smooth-scroll-speed-factor.html | 76 + .../-dpad-recycler-view/set-span-count.html | 76 + .../set-span-size-lookup.html | 76 + .../set-will-not-draw.html | 76 + .../-dpad-recycler-view/smooth-scroll-by.html | 76 + .../start-nested-scroll.html | 76 + .../-dpad-scroller/-dpad-scroller.html | 76 + .../calculate-scroll-distance.html | 76 + .../-scroll-distance-calculator/index.html | 100 + .../-dpad-scroller/attach.html | 76 + .../-dpad-scroller/detach.html | 76 + .../-dpad-scroller/index.html | 168 + .../set-smooth-scroll-enabled.html | 76 + .../-dpad-selection-snap-helper.html | 76 + .../attach-to-recycler-view.html | 76 + .../calculate-distance-to-final-snap.html | 76 + .../find-snap-view.html | 76 + .../-dpad-selection-snap-helper/index.html | 194 + .../-dpad-span-size-lookup.html | 76 + .../get-cached-span-group-index.html | 76 + .../get-cached-span-index.html | 76 + .../get-span-group-index.html | 76 + .../get-span-index.html | 76 + .../-dpad-span-size-lookup/get-span-size.html | 76 + .../-dpad-span-size-lookup/index.html | 224 + .../invalidate-cache.html | 76 + .../set-span-group-index-cache-enabled.html | 76 + .../set-span-index-cache-enabled.html | 76 + .../get-sub-position-alignments.html | 76 + .../-dpad-view-holder/index.html | 145 + .../on-view-holder-deselected.html | 76 + .../on-view-holder-selected-and-aligned.html | 76 + .../on-view-holder-selected.html | 76 + .../calculate-end-extra-layout-space.html | 76 + .../calculate-start-extra-layout-space.html | 76 + .../-extra-layout-space-strategy/index.html | 115 + .../-c-i-r-c-u-l-a-r/index.html | 115 + .../-c-o-n-t-i-n-u-o-u-s/index.html | 115 + .../-s-t-a-n-d-a-r-d/index.html | 115 + .../-focusable-direction/entries.html | 76 + .../-focusable-direction/index.html | 213 + .../-focusable-direction/value-of.html | 76 + .../-focusable-direction/values.html | 76 + .../-on-child-laid-out-listener/index.html | 100 + .../on-child-laid-out.html | 76 + .../-on-view-focused-listener/index.html | 100 + .../on-view-focused.html | 76 + .../index.html | 115 + .../on-view-holder-selected-and-aligned.html | 76 + .../on-view-holder-selected.html | 76 + .../-c-r-e-a-t-o-r/create-from-parcel.html | 76 + .../-c-r-e-a-t-o-r/index.html | 115 + .../-c-r-e-a-t-o-r/new-array.html | 76 + .../-parent-alignment/-edge/-m-a-x/index.html | 115 + .../-parent-alignment/-edge/-m-i-n/index.html | 115 + .../-edge/-m-i-n_-m-a-x/index.html | 115 + .../-edge/-n-o-n-e/index.html | 115 + .../-parent-alignment/-edge/entries.html | 76 + .../-parent-alignment/-edge/index.html | 228 + .../-parent-alignment/-edge/value-of.html | 76 + .../-parent-alignment/-edge/values.html | 76 + .../-parent-alignment/-parent-alignment.html | 76 + .../-parent-alignment/describe-contents.html | 76 + .../-parent-alignment/edge.html | 76 + .../-parent-alignment/fraction.html | 76 + .../-parent-alignment/index.html | 247 + .../is-fraction-enabled.html | 76 + .../-parent-alignment/offset.html | 76 + .../prefer-keyline-over-edge.html | 76 + .../-parent-alignment/write-to-parcel.html | 76 + .../-c-r-e-a-t-o-r/create-from-parcel.html | 76 + .../-c-r-e-a-t-o-r/index.html | 115 + .../-c-r-e-a-t-o-r/new-array.html | 76 + .../-sub-position-alignment.html | 76 + .../align-to-baseline.html | 76 + .../alignment-view-id.html | 76 + .../describe-contents.html | 76 + .../-sub-position-alignment/fraction.html | 76 + .../get-focus-view-id.html | 76 + .../include-padding.html | 76 + .../-sub-position-alignment/index.html | 262 + .../is-fraction-enabled.html | 76 + .../-sub-position-alignment/offset.html | 76 + .../write-to-parcel.html | 76 + .../-unbound-view-pool.html | 76 + .../-unbound-view-pool/clear.html | 76 + .../get-recycled-view-count.html | 76 + .../-unbound-view-pool/get-recycled-view.html | 76 + .../-unbound-view-pool/index.html | 179 + .../-unbound-view-pool/put-recycled-view.html | 76 + .../set-max-recycled-views.html | 76 + .../-d-e-f-a-u-l-t_-f-r-a-c-t-i-o-n.html | 76 + .../-d-e-f-a-u-l-t_-o-f-f-s-e-t.html | 76 + .../-view-alignment/-companion/index.html | 115 + .../-view-alignment/align-to-baseline.html | 76 + .../-view-alignment/fraction.html | 76 + .../-view-alignment/include-padding.html | 76 + .../-view-alignment/index.html | 179 + .../-view-alignment/is-fraction-enabled.html | 76 + .../-view-alignment/offset.html | 76 + .../-view-holder-task/-view-holder-task.html | 76 + .../execute-when-aligned.html | 76 + .../-view-holder-task/execute.html | 76 + .../-view-holder-task/index.html | 138 + .../index.html | 358 + api/dpadrecyclerview/index.html | 167 + api/dpadrecyclerview/navigation.html | 422 + api/images/anchor-copy-button.svg | 8 + api/images/arrow_down.svg | 7 + api/images/burger.svg | 9 + api/images/copy-icon.svg | 7 + api/images/copy-successful-icon.svg | 7 + api/images/footer-go-to-link.svg | 7 + api/images/go-to-top-icon.svg | 8 + api/images/homepage.svg | 3 + api/images/logo-icon.svg | 14 + .../nav-icons/abstract-class-kotlin.svg | 26 + api/images/nav-icons/abstract-class.svg | 20 + api/images/nav-icons/annotation-kotlin.svg | 13 + api/images/nav-icons/annotation.svg | 7 + api/images/nav-icons/class-kotlin.svg | 13 + api/images/nav-icons/class.svg | 7 + api/images/nav-icons/enum-kotlin.svg | 13 + api/images/nav-icons/enum.svg | 7 + api/images/nav-icons/exception-class.svg | 7 + api/images/nav-icons/field-value.svg | 10 + api/images/nav-icons/field-variable.svg | 10 + api/images/nav-icons/function.svg | 7 + api/images/nav-icons/interface-kotlin.svg | 13 + api/images/nav-icons/interface.svg | 7 + api/images/nav-icons/object.svg | 13 + api/images/nav-icons/typealias-kotlin.svg | 13 + api/images/theme-toggle.svg | 7 + api/index.html | 109 + api/navigation.html | 422 + api/package-list | 17 + api/scripts/clipboard.js | 56 + api/scripts/main.js | 44 + api/scripts/navigation-loader.js | 95 + api/scripts/pages.json | 1 + api/scripts/platform-content-handler.js | 400 + api/scripts/prism.js | 22 + api/scripts/sourceset_dependencies.js | 1 + .../symbol-parameters-wrapper_deferred.js | 64 + api/styles/font-jb-sans-auto.css | 36 + api/styles/logo-styles.css | 9 + api/styles/main.css | 124 + api/styles/prism.css | 217 + api/styles/style.css | 1509 ++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.fe8b6f2b.min.js | 29 + assets/javascripts/bundle.fe8b6f2b.min.js.map | 7 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 ++++++++ .../workers/search.b8dbb3d2.min.js | 42 + .../workers/search.b8dbb3d2.min.js.map | 7 + assets/stylesheets/main.6543a935.min.css | 1 + assets/stylesheets/main.6543a935.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + changelog/index.html | 1764 +++ compose/index.html | 1042 ++ getting_started/index.html | 987 ++ img/center_alignment.png | Bin 0 -> 16299 bytes img/circular_focus.png | Bin 0 -> 12158 bytes img/continuous_focus.png | Bin 0 -> 13362 bytes img/max_pending_alignments.png | Bin 0 -> 17342 bytes img/start_alignment.png | Bin 0 -> 20368 bytes img/start_alignment_padding.png | Bin 0 -> 31907 bytes img/subposition_alignment.png | Bin 0 -> 42459 bytes index.html | 908 ++ migrating_leanback/index.html | 1132 ++ recipes/alignment/index.html | 1014 ++ recipes/dragdrop/index.html | 855 ++ recipes/focus/index.html | 926 ++ recipes/layout/index.html | 1008 ++ recipes/scrollbars/index.html | 835 + recipes/scrolling/index.html | 912 ++ recipes/spacing/index.html | 1079 ++ selection/index.html | 848 + sitemap.xml | 83 + sitemap.xml.gz | Bin 0 -> 339 bytes testing/index.html | 869 ++ xml/index.html | 906 ++ 585 files changed, 85898 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 alignment/index.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/-dpad-compose-focus-view-holder.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/get-item.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/index.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-content.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-focusable.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-item-state.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/-dpad-compose-view-holder.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/get-item.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/index.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-content.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-item-state.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/index.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/install-for.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/index.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/dpad-clickable.html create mode 100644 api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/index.html create mode 100644 api/dpadrecyclerview-compose/index.html create mode 100644 api/dpadrecyclerview-compose/navigation.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute-for-view-holder-item-view-at.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-item-view-bounds.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-relative-item-view-bounds.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to-holder.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-last-position.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-position.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-sub-position.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-child-alignment.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-parent-alignment.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-adapter-update.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-idle-scroll.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/-dpad-view-action.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-constraints.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-description.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/clear-focus.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-relative-view-bounds.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-view-bounds.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/request-focus.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/wait-for-condition.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-focused.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-selected.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/does-not-have-focus.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/has-focus.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-focused.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-not-focused.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/with-descendant-of-item-view-at.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/-disable-idle-timeout-rule.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/apply.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/back.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/click.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/index.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-down.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-key.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-left.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-right.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-up.html create mode 100644 api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/index.html create mode 100644 api/dpadrecyclerview-testing/index.html create mode 100644 api/dpadrecyclerview-testing/navigation.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/-view-bounds.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/as-rect.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/bottom.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/height.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/left.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-horizontal.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-vertical.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/right.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/set-empty.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/to-string.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/top.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/width.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-horizontally-by.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-vertically-by.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/-i-n-v-a-l-i-d_-s-p-a-n_-i-d.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-dpad-layout-params.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/alignment-anchor.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-group-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-size.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/-pivot-layout-manager.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-layout-completed-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-focused-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-holder-selected-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-horizontally.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-vertically.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/check-layout-params.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-layout-completed-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-focused-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-holder-selected-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-adjacent-prefetch-positions.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-initial-prefetch-positions.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-extent.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-range.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-scroll-vector-for-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-extent.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-range.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-completely-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-completely-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-default-layout-params.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-layout-params.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-child-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-column-count-for-accessibility.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-current-sub-positions.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-focusable-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-loop-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-moves.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-parent-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-row-count-for-accessibility.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-sub-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-smooth-scroll-speed-factor.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-size-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-auto-measure-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-focus-search-disabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-reversed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-adapter-changed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-add-focusables.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-attached-to-window.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-detached-from-window.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info-for-item.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-intercept-focus-search.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-added.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-changed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-moved.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-removed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-children.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-completed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-child-focus.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-focus-in-descendants.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-restore-instance-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-save-instance-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/perform-accessibility-action.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/prepare-for-drop.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-layout-completed-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-focused-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-holder-selected-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/request-child-rectangle-on-screen.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-horizontally-by.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-to-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-vertically-by.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-sub-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-child-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-children-drawing-order-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-extra-layout-space-strategy.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-allowed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-side-allowed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-disabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-enabled-during-animations.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focusable-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-gravity.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-layout-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-loop-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-moves.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-on-child-laid-out-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-orientation.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-parent-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-recycle-children-on-detach.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-reverse-layout.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-scroll-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-focus-changes-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-scroll-speed-factor.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-size-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/smooth-scroll-to-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/start-smooth-scroll.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/supports-predictive-item-animations.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/create.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/get-item-offsets.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/create.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/get-item-offsets.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/-dpad-spacing-decoration.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/get-item-offsets.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/set-spacing-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/should-apply-spacing.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/clear.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/restore.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/save.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/-dpad-state-registry.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-scroll-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-view-holder-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/set-save-instance-state-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/clear.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/restore-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/save-state.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/create-from-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/new-array.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-child-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/align-to-baseline.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/describe-contents.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/fraction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/include-padding.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/is-fraction-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/write-to-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-dpad-drag-helper.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/get-mutable-items.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-started.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-stopped.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/attach-to-recycler-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/detach-from-recycler-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/is-dragging.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/start-drag.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/stop-drag.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-a-x/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-i-n_-m-a-x/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-n-o-n-e/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/entries.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/value-of.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/values.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-dpad-recycler-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/on-intercept-key-event.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/on-layout-completed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/on-intercept-motion-event.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/on-intercept-touch-event.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/on-unhandled-key.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-duration.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-interpolator.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-layout-completed-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-focused-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-holder-selected-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-recycler-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-layout-completed-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-focused-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-holder-selected-listeners.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-key-event.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-touch-event.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-max-edge-fading.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-min-edge-fading.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-completely-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-completely-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-visible-item-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/focus-search.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-child-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-current-sub-positions.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-focusable-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-initial-prefetch-item-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-loop-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-length.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-length.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-key-intercept-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-motion-intercept-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-unhandled-key-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-orientation.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-parent-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-sub-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-moves.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-speed-factor.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-size-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/has-overlapping-rendering.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-drawing-order-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-search-disabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-item-prefetch-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-reversed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-max-edge-fading-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-min-edge-fading-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-scroll-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-rtl-properties-changed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-scroll-state-changed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-layout-completed-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-focused-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-holder-selected-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view-at.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/request-layout.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-drawing-order-callback.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-extra-layout-space-strategy.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-fading-edge-length.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-drawing-order-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-allowed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-side-allowed.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-disabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-enabled-during-animations.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focusable-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-gravity.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-fixed-size.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-overlapping-rendering.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-initial-prefetch-item-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-animator.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-prefetch-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-manager.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-while-scrolling-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-loop-direction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-length.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-length.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-child-laid-out-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-key-intercept-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-motion-intercept-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-touch-intercept-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-unhandled-key-listener.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-orientation.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-parent-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-recycle-children-on-detach.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-reverse-layout.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-scroll-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position-smooth.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position-smooth.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-focus-changes-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-behavior.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-moves.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-speed-factor.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-size-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-will-not-draw.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/smooth-scroll-by.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/start-nested-scroll.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-dpad-scroller.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/calculate-scroll-distance.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/attach.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/detach.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/set-smooth-scroll-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/-dpad-selection-snap-helper.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/attach-to-recycler-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/calculate-distance-to-final-snap.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/find-snap-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/-dpad-span-size-lookup.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-group-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-group-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-size.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/invalidate-cache.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-group-index-cache-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-index-cache-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/get-sub-position-alignments.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-deselected.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected-and-aligned.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-end-extra-layout-space.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-start-extra-layout-space.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-i-r-c-u-l-a-r/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-o-n-t-i-n-u-o-u-s/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-s-t-a-n-d-a-r-d/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/entries.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/value-of.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/values.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/on-child-laid-out.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/on-view-focused.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected-and-aligned.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/create-from-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/new-array.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-a-x/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n_-m-a-x/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-n-o-n-e/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/entries.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/value-of.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/values.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-parent-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/describe-contents.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/edge.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/fraction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/is-fraction-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/prefer-keyline-over-edge.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/write-to-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/create-from-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/new-array.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-sub-position-alignment.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/align-to-baseline.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/alignment-view-id.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/describe-contents.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/fraction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/get-focus-view-id.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/include-padding.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/is-fraction-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/write-to-parcel.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/-unbound-view-pool.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/clear.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view-count.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/put-recycled-view.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/set-max-recycled-views.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-f-r-a-c-t-i-o-n.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-o-f-f-s-e-t.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/align-to-baseline.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/fraction.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/include-padding.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/is-fraction-enabled.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/offset.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/-view-holder-task.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute-when-aligned.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/index.html create mode 100644 api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/index.html create mode 100644 api/dpadrecyclerview/index.html create mode 100644 api/dpadrecyclerview/navigation.html create mode 100644 api/images/anchor-copy-button.svg create mode 100644 api/images/arrow_down.svg create mode 100644 api/images/burger.svg create mode 100644 api/images/copy-icon.svg create mode 100644 api/images/copy-successful-icon.svg create mode 100644 api/images/footer-go-to-link.svg create mode 100644 api/images/go-to-top-icon.svg create mode 100644 api/images/homepage.svg create mode 100644 api/images/logo-icon.svg create mode 100644 api/images/nav-icons/abstract-class-kotlin.svg create mode 100644 api/images/nav-icons/abstract-class.svg create mode 100644 api/images/nav-icons/annotation-kotlin.svg create mode 100644 api/images/nav-icons/annotation.svg create mode 100644 api/images/nav-icons/class-kotlin.svg create mode 100644 api/images/nav-icons/class.svg create mode 100644 api/images/nav-icons/enum-kotlin.svg create mode 100644 api/images/nav-icons/enum.svg create mode 100644 api/images/nav-icons/exception-class.svg create mode 100644 api/images/nav-icons/field-value.svg create mode 100644 api/images/nav-icons/field-variable.svg create mode 100644 api/images/nav-icons/function.svg create mode 100644 api/images/nav-icons/interface-kotlin.svg create mode 100644 api/images/nav-icons/interface.svg create mode 100644 api/images/nav-icons/object.svg create mode 100644 api/images/nav-icons/typealias-kotlin.svg create mode 100644 api/images/theme-toggle.svg create mode 100644 api/index.html create mode 100644 api/navigation.html create mode 100644 api/package-list create mode 100644 api/scripts/clipboard.js create mode 100644 api/scripts/main.js create mode 100644 api/scripts/navigation-loader.js create mode 100644 api/scripts/pages.json create mode 100644 api/scripts/platform-content-handler.js create mode 100644 api/scripts/prism.js create mode 100644 api/scripts/sourceset_dependencies.js create mode 100644 api/scripts/symbol-parameters-wrapper_deferred.js create mode 100644 api/styles/font-jb-sans-auto.css create mode 100644 api/styles/logo-styles.css create mode 100644 api/styles/main.css create mode 100644 api/styles/prism.css create mode 100644 api/styles/style.css create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.fe8b6f2b.min.js create mode 100644 assets/javascripts/bundle.fe8b6f2b.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.b8dbb3d2.min.js create mode 100644 assets/javascripts/workers/search.b8dbb3d2.min.js.map create mode 100644 assets/stylesheets/main.6543a935.min.css create mode 100644 assets/stylesheets/main.6543a935.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map create mode 100644 changelog/index.html create mode 100644 compose/index.html create mode 100644 getting_started/index.html create mode 100644 img/center_alignment.png create mode 100644 img/circular_focus.png create mode 100644 img/continuous_focus.png create mode 100644 img/max_pending_alignments.png create mode 100644 img/start_alignment.png create mode 100644 img/start_alignment_padding.png create mode 100644 img/subposition_alignment.png create mode 100644 index.html create mode 100644 migrating_leanback/index.html create mode 100644 recipes/alignment/index.html create mode 100644 recipes/dragdrop/index.html create mode 100644 recipes/focus/index.html create mode 100644 recipes/layout/index.html create mode 100644 recipes/scrollbars/index.html create mode 100644 recipes/scrolling/index.html create mode 100644 recipes/spacing/index.html create mode 100644 selection/index.html create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 testing/index.html create mode 100644 xml/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..6518420f --- /dev/null +++ b/404.html @@ -0,0 +1,655 @@ + + + + + + + + + + + + + + + + + + + + + + + DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/alignment/index.html b/alignment/index.html new file mode 100644 index 00000000..593425a3 --- /dev/null +++ b/alignment/index.html @@ -0,0 +1,854 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Alignment - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Alignment

+

This section is meant to be an overview to the concepts of ParentAlignment and ChildAlignment.

+

For more detailed examples, check this section.

+

Parent Alignment

+

The parent alignment is the first configuration required for aligning views in DpadRecyclerView. +This configuration will take care of calculating the anchor position for your ViewHolders.

+

Consider the following example for a vertical DpadRecyclerView:

+

image

+

The red circle is centered both horizontally and vertically and serves as the anchor for all ViewHolders.

+

To create this configuration, you would do the following:

+
ParentAlignment(fraction = 0.5f)
+
+

You can also create a top anchor:

+

image

+

In this case, the configuration would be:

+
ParentAlignment(offset = 16.dp.toPx(), fraction = 0f)
+
+

Both offset and fraction start counting from the minimum edge of the DpadRecyclerView. For horizontal orientations, this would be the start and for vertical orientation this would be the top.

+

Aligning to an edge

+

By default, the views at the minimum and maximum edges won't be aligned to the keyline position specified by ParentAlignment. If you want to change this behavior, you need to change the edge argument of ParentAlignment:

+
ParentAlignment(edge = ParentAlignment.Edge.MIN_MAX)
+
+
    +
  • To align every view: ParentAlignment.Edge.NONE
  • +
  • To align every view except the ones at the minimum edge: ParentAlignment.Edge.MIN
  • +
  • To align every view except the ones at the maximum edge: ParentAlignment.Edge.MAX
  • +
  • To align every view except the ones at the minimum edge and maximum edge (default behavior): ParentAlignment.Edge.MIN_MAX
  • +
+

Child Alignment

+

The ChildAlignment class will take care of calculating the anchor position for your ViewHolder views.

+

Consider the following example for a horizontal DpadRecyclerView:

+

Start alignment

+

The blue circle shows the keyline position defined by ParentAlignment and the green circles shows the anchor position of each child +defined by ChildAlignment.

+

In this case, the combined configuration would be:

+
ParentAlignment(offset = 24.dp.toPx(), fraction = 0f)
+ChildAlignment(fraction = 0f)
+
+

Examples

+

For more detailed examples, check the recipes section.

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/-dpad-compose-focus-view-holder.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/-dpad-compose-focus-view-holder.html new file mode 100644 index 00000000..a7087744 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/-dpad-compose-focus-view-holder.html @@ -0,0 +1,76 @@ + + + + + DpadComposeFocusViewHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadComposeFocusViewHolder

+
+
constructor(parent: ViewGroup, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, isFocusable: Boolean = true, content: @Composable (item: T) -> Unit = {})
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/get-item.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/get-item.html new file mode 100644 index 00000000..34fe0647 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/get-item.html @@ -0,0 +1,76 @@ + + + + + getItem + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItem

+
+
fun getItem(): T?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/index.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/index.html new file mode 100644 index 00000000..1028e866 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/index.html @@ -0,0 +1,363 @@ + + + + + DpadComposeFocusViewHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadComposeFocusViewHolder

+
class DpadComposeFocusViewHolder<T>(parent: ViewGroup, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, isFocusable: Boolean = true, content: @Composable (item: T) -> Unit = {}) : RecyclerView.ViewHolder

Similar to DpadComposeViewHolder, but sends the focus down to composables

This allows inline definition of ViewHolders in onCreateViewHolder:

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DpadComposeFocusViewHolder<Int> {
return DpadComposeFocusViewHolder(parent) { item, isSelected ->
ItemComposable(item, isSelected)
}
}

To update the current item, override onBindViewHolder and call setItemState:

override fun onBindViewHolder(holder: DpadComposeFocusViewHolder<Int>, position: Int) {
holder.setItemState(getItem(position))
}
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(parent: ViewGroup, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, isFocusable: Boolean = true, content: @Composable (item: T) -> Unit = {})
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getItem(): T?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setContent(content: @Composable (item: T) -> Unit)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFocusable(focusable: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setItemState(item: T?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun toString(): String
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-content.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-content.html new file mode 100644 index 00000000..f8f261e1 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-content.html @@ -0,0 +1,76 @@ + + + + + setContent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setContent

+
+
fun setContent(content: @Composable (item: T) -> Unit)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-focusable.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-focusable.html new file mode 100644 index 00000000..55b89d82 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-focusable.html @@ -0,0 +1,76 @@ + + + + + setFocusable + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusable

+
+
fun setFocusable(focusable: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-item-state.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-item-state.html new file mode 100644 index 00000000..fc8afd63 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-focus-view-holder/set-item-state.html @@ -0,0 +1,76 @@ + + + + + setItemState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setItemState

+
+
fun setItemState(item: T?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/-dpad-compose-view-holder.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/-dpad-compose-view-holder.html new file mode 100644 index 00000000..56780e20 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/-dpad-compose-view-holder.html @@ -0,0 +1,76 @@ + + + + + DpadComposeViewHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadComposeViewHolder

+
+
constructor(parent: ViewGroup, onClick: (item: T) -> Unit? = null, onLongClick: (item: T) -> Boolean? = null, isFocusable: Boolean = true, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, content: @Composable (item: T, isFocused: Boolean) -> Unit = { _, _ -> })
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/get-item.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/get-item.html new file mode 100644 index 00000000..2a8defd8 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/get-item.html @@ -0,0 +1,76 @@ + + + + + getItem + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItem

+
+
fun getItem(): T?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/index.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/index.html new file mode 100644 index 00000000..1690aa32 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/index.html @@ -0,0 +1,348 @@ + + + + + DpadComposeViewHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadComposeViewHolder

+
class DpadComposeViewHolder<T>(parent: ViewGroup, onClick: (item: T) -> Unit? = null, onLongClick: (item: T) -> Boolean? = null, isFocusable: Boolean = true, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, content: @Composable (item: T, isFocused: Boolean) -> Unit = { _, _ -> }) : RecyclerView.ViewHolder

A basic ViewHolder that forwards content to a ComposeView and handles focus and clicks inside the View system.

Focus is kept inside the internal ComposeView to ensure that it behaves correctly and to workaround the following issues:

  1. Focus is not sent correctly from Views to Composables: b/268248352 This is solved by just holding the focus in ComposeView

  2. Clicking on a focused Composable does not trigger the standard audio feedback: b/268268856 This is solved by just handling the click on ComposeView directly

This allows inline definition of ViewHolders in onCreateViewHolder:

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DpadComposeViewHolder<Int> {
return DpadComposeViewHolder(parent) { item, isFocused ->
ItemComposable(item, isFocused)
}
}

To update the current item, override onBindViewHolder and call setItemState:

override fun onBindViewHolder(holder: DpadComposeViewHolder<Int>, position: Int) {
holder.setItemState(getItem(position))
}
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(parent: ViewGroup, onClick: (item: T) -> Unit? = null, onLongClick: (item: T) -> Boolean? = null, isFocusable: Boolean = true, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, content: @Composable (item: T, isFocused: Boolean) -> Unit = { _, _ -> })
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getItem(): T?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setContent(content: @Composable (item: T) -> Unit)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setItemState(item: T?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun toString(): String
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-content.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-content.html new file mode 100644 index 00000000..ea29b845 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-content.html @@ -0,0 +1,76 @@ + + + + + setContent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setContent

+
+
fun setContent(content: @Composable (item: T) -> Unit)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-item-state.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-item-state.html new file mode 100644 index 00000000..d9945a09 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-dpad-compose-view-holder/set-item-state.html @@ -0,0 +1,76 @@ + + + + + setItemState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setItemState

+
+
fun setItemState(item: T?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/index.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/index.html new file mode 100644 index 00000000..82ffd3cd --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/index.html @@ -0,0 +1,100 @@ + + + + + DisposeOnRecycled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DisposeOnRecycled

+

Similar to ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool but skips releasing compositions when detached from window. This is useful for re-using compositions a lot more often when scrolling a RecyclerView.

If you use DpadRecyclerView.setRecycleChildrenOnDetach, this will behave exactly the same as ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool.

If you use DpadRecyclerView.setExtraLayoutSpaceStrategy, please profile the compositions before considering using this strategy.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun installFor(view: AbstractComposeView): () -> Unit
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/install-for.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/install-for.html new file mode 100644 index 00000000..107b3c3d --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/-dispose-on-recycled/install-for.html @@ -0,0 +1,76 @@ + + + + + installFor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

installFor

+
+
open override fun installFor(view: AbstractComposeView): () -> Unit
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/index.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/index.html new file mode 100644 index 00000000..4f47d846 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/-recycler-view-composition-strategy/index.html @@ -0,0 +1,100 @@ + + + + + RecyclerViewCompositionStrategy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

RecyclerViewCompositionStrategy

+ +
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Similar to ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool but skips releasing compositions when detached from window. This is useful for re-using compositions a lot more often when scrolling a RecyclerView.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/dpad-clickable.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/dpad-clickable.html new file mode 100644 index 00000000..a2056775 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/dpad-clickable.html @@ -0,0 +1,76 @@ + + + + + dpadClickable + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dpadClickable

+
+

Similar to Modifier.clickable, but triggers a sound effect on click. Workaround for: https://issuetracker.google.com/issues/268268856

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/index.html b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/index.html new file mode 100644 index 00000000..59dedac0 --- /dev/null +++ b/api/dpadrecyclerview-compose/com.rubensousa.dpadrecyclerview.compose/index.html @@ -0,0 +1,148 @@ + + + + + com.rubensousa.dpadrecyclerview.compose + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
class DpadComposeFocusViewHolder<T>(parent: ViewGroup, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, isFocusable: Boolean = true, content: @Composable (item: T) -> Unit = {}) : RecyclerView.ViewHolder

Similar to DpadComposeViewHolder, but sends the focus down to composables

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
class DpadComposeViewHolder<T>(parent: ViewGroup, onClick: (item: T) -> Unit? = null, onLongClick: (item: T) -> Boolean? = null, isFocusable: Boolean = true, compositionStrategy: ViewCompositionStrategy = RecyclerViewCompositionStrategy.DisposeOnRecycled, content: @Composable (item: T, isFocused: Boolean) -> Unit = { _, _ -> }) : RecyclerView.ViewHolder

A basic ViewHolder that forwards content to a ComposeView and handles focus and clicks inside the View system.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Similar to Modifier.clickable, but triggers a sound effect on click. Workaround for: https://issuetracker.google.com/issues/268268856

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/index.html b/api/dpadrecyclerview-compose/index.html new file mode 100644 index 00000000..c0b4cdb6 --- /dev/null +++ b/api/dpadrecyclerview-compose/index.html @@ -0,0 +1,95 @@ + + + + + dpadrecyclerview-compose + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dpadrecyclerview-compose

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-compose/navigation.html b/api/dpadrecyclerview-compose/navigation.html new file mode 100644 index 00000000..1cd820d5 --- /dev/null +++ b/api/dpadrecyclerview-compose/navigation.html @@ -0,0 +1,422 @@ +
+
+ +
+ +
+ +
+
+ CREATOR +
+
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+ NONE +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+ + + + +
+ +
+ +
+ +
+
+ STANDARD +
+
+
+
+ CIRCULAR +
+
+
+ +
+
+ + + +
+ +
+
+ CREATOR +
+
+
+
+ Edge +
+
+
+ NONE +
+
+
+
+ MIN +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+
+
+ +
+
+ CREATOR +
+
+
+
+ +
+
+ +
+
+ Companion +
+
+
+
+ +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute-for-view-holder-item-view-at.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute-for-view-holder-item-view-at.html new file mode 100644 index 00000000..acb42fca --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute-for-view-holder-item-view-at.html @@ -0,0 +1,76 @@ + + + + + executeForViewHolderItemViewAt + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

executeForViewHolderItemViewAt

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute.html new file mode 100644 index 00000000..56a3523d --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/execute.html @@ -0,0 +1,76 @@ + + + + + execute + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

execute

+
+
fun execute(label: String, action: (recyclerView: DpadRecyclerView) -> Unit): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-item-view-bounds.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-item-view-bounds.html new file mode 100644 index 00000000..4c28c4cc --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-item-view-bounds.html @@ -0,0 +1,76 @@ + + + + + getItemViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItemViewBounds

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-relative-item-view-bounds.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-relative-item-view-bounds.html new file mode 100644 index 00000000..63682259 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/get-relative-item-view-bounds.html @@ -0,0 +1,76 @@ + + + + + getRelativeItemViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getRelativeItemViewBounds

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/index.html new file mode 100644 index 00000000..f8b595fc --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/index.html @@ -0,0 +1,280 @@ + + + + + DpadRecyclerViewActions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadRecyclerViewActions

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun execute(label: String, action: (recyclerView: DpadRecyclerView) -> Unit): ViewAction
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : RecyclerView.ViewHolder> scrollTo(itemViewMatcher: Matcher<View>, keyPressDelay: Int = DEFAULT_KEY_PRESS_DELAY): RecyclerViewActions.PositionableRecyclerViewAction

Similar to RecyclerViewActions.scrollToHolder, but instead of invoking scrollToPosition, it injects KeyEvents to simulate real DPAD events from the user

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : RecyclerView.ViewHolder> scrollToHolder(viewHolderMatcher: Matcher<T>, keyPressDelay: Int = DEFAULT_KEY_PRESS_DELAY): RecyclerViewActions.PositionableRecyclerViewAction

Similar to RecyclerViewActions.scrollToHolder, but instead of invoking scrollToPosition, it injects KeyEvents to simulate real DPAD events from the user

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun selectLastPosition(smooth: Boolean, onPositionSelected: (position: Int) -> Unit = {}): ViewAction
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun selectPosition(position: Int, subPosition: Int = 0, smooth: Boolean = true): ViewAction
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun selectSubPosition(subPosition: Int, smooth: Boolean = true): ViewAction
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun waitForAdapterUpdate(updates: Int = 1, failOnTimeout: Boolean = false, timeout: Long = 2, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun waitForIdleScroll(timeout: Long = 5, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to-holder.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to-holder.html new file mode 100644 index 00000000..6be0904f --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to-holder.html @@ -0,0 +1,76 @@ + + + + + scrollToHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

scrollToHolder

+
+
fun <T : RecyclerView.ViewHolder> scrollToHolder(viewHolderMatcher: Matcher<T>, keyPressDelay: Int = DEFAULT_KEY_PRESS_DELAY): RecyclerViewActions.PositionableRecyclerViewAction

Similar to RecyclerViewActions.scrollToHolder, but instead of invoking scrollToPosition, it injects KeyEvents to simulate real DPAD events from the user

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to.html new file mode 100644 index 00000000..3877926d --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/scroll-to.html @@ -0,0 +1,76 @@ + + + + + scrollTo + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

scrollTo

+
+
fun <T : RecyclerView.ViewHolder> scrollTo(itemViewMatcher: Matcher<View>, keyPressDelay: Int = DEFAULT_KEY_PRESS_DELAY): RecyclerViewActions.PositionableRecyclerViewAction

Similar to RecyclerViewActions.scrollToHolder, but instead of invoking scrollToPosition, it injects KeyEvents to simulate real DPAD events from the user

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-last-position.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-last-position.html new file mode 100644 index 00000000..8109afd5 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-last-position.html @@ -0,0 +1,76 @@ + + + + + selectLastPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

selectLastPosition

+
+
fun selectLastPosition(smooth: Boolean, onPositionSelected: (position: Int) -> Unit = {}): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-position.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-position.html new file mode 100644 index 00000000..6583bcb8 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-position.html @@ -0,0 +1,76 @@ + + + + + selectPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

selectPosition

+
+
fun selectPosition(position: Int, subPosition: Int = 0, smooth: Boolean = true): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-sub-position.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-sub-position.html new file mode 100644 index 00000000..e83e1ac1 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/select-sub-position.html @@ -0,0 +1,76 @@ + + + + + selectSubPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

selectSubPosition

+
+
fun selectSubPosition(subPosition: Int, smooth: Boolean = true): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-child-alignment.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-child-alignment.html new file mode 100644 index 00000000..9a8e8039 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-child-alignment.html @@ -0,0 +1,76 @@ + + + + + updateChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

updateChildAlignment

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-parent-alignment.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-parent-alignment.html new file mode 100644 index 00000000..39c8b13a --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/update-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + updateParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

updateParentAlignment

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-adapter-update.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-adapter-update.html new file mode 100644 index 00000000..a91b18cb --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-adapter-update.html @@ -0,0 +1,76 @@ + + + + + waitForAdapterUpdate + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

waitForAdapterUpdate

+
+
fun waitForAdapterUpdate(updates: Int = 1, failOnTimeout: Boolean = false, timeout: Long = 2, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-idle-scroll.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-idle-scroll.html new file mode 100644 index 00000000..ab7d4c47 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-recycler-view-actions/wait-for-idle-scroll.html @@ -0,0 +1,76 @@ + + + + + waitForIdleScroll + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

waitForIdleScroll

+
+
fun waitForIdleScroll(timeout: Long = 5, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/-dpad-view-action.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/-dpad-view-action.html new file mode 100644 index 00000000..0a15c782 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/-dpad-view-action.html @@ -0,0 +1,76 @@ + + + + + DpadViewAction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewAction

+
+
constructor(description: String)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-constraints.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-constraints.html new file mode 100644 index 00000000..3f843ea4 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-constraints.html @@ -0,0 +1,76 @@ + + + + + getConstraints + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getConstraints

+
+
open override fun getConstraints(): Matcher<View>
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-description.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-description.html new file mode 100644 index 00000000..b3ddd1cd --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/get-description.html @@ -0,0 +1,76 @@ + + + + + getDescription + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getDescription

+
+
open override fun getDescription(): String
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/index.html new file mode 100644 index 00000000..b9d0a3e2 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/-dpad-view-action/index.html @@ -0,0 +1,149 @@ + + + + + DpadViewAction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewAction

+
abstract class DpadViewAction(description: String) : ViewAction
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(description: String)
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getConstraints(): Matcher<View>
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getDescription(): String
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun perform(p0: UiController, p1: View)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/clear-focus.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/clear-focus.html new file mode 100644 index 00000000..d7b9a1a1 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/clear-focus.html @@ -0,0 +1,76 @@ + + + + + clearFocus + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearFocus

+
+

Note: this will only work if there's something else in your View hierarchy that can take focus

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-relative-view-bounds.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-relative-view-bounds.html new file mode 100644 index 00000000..b901c92c --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-relative-view-bounds.html @@ -0,0 +1,76 @@ + + + + + getRelativeViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getRelativeViewBounds

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-view-bounds.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-view-bounds.html new file mode 100644 index 00000000..925fe2f9 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/get-view-bounds.html @@ -0,0 +1,76 @@ + + + + + getViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getViewBounds

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/index.html new file mode 100644 index 00000000..4097528a --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/index.html @@ -0,0 +1,179 @@ + + + + + DpadViewActions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewActions

+

Useful ViewAction for plain views

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract class DpadViewAction(description: String) : ViewAction
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Note: this will only work if there's something else in your View hierarchy that can take focus

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : View> waitForCondition(description: String, condition: (view: T) -> Boolean, timeout: Long = 2, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/request-focus.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/request-focus.html new file mode 100644 index 00000000..b5e018da --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/request-focus.html @@ -0,0 +1,76 @@ + + + + + requestFocus + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

requestFocus

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/wait-for-condition.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/wait-for-condition.html new file mode 100644 index 00000000..e6066f86 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/-dpad-view-actions/wait-for-condition.html @@ -0,0 +1,76 @@ + + + + + waitForCondition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

waitForCondition

+
+
fun <T : View> waitForCondition(description: String, condition: (view: T) -> Boolean, timeout: Long = 2, timeoutUnit: TimeUnit = TimeUnit.SECONDS): ViewAction
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/index.html new file mode 100644 index 00000000..19991859 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.actions/index.html @@ -0,0 +1,114 @@ + + + + + com.rubensousa.dpadrecyclerview.testing.actions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Useful ViewAction for plain views

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/index.html new file mode 100644 index 00000000..e115f654 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/index.html @@ -0,0 +1,115 @@ + + + + + DpadRecyclerViewAssertions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadRecyclerViewAssertions

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun isFocused(position: Int, subPosition: Int = 0): ViewAssertion
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun isSelected(position: Int, subPosition: Int = 0): ViewAssertion
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-focused.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-focused.html new file mode 100644 index 00000000..48dd4c6f --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-focused.html @@ -0,0 +1,76 @@ + + + + + isFocused + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFocused

+
+
fun isFocused(position: Int, subPosition: Int = 0): ViewAssertion
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-selected.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-selected.html new file mode 100644 index 00000000..f8cee87b --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-recycler-view-assertions/is-selected.html @@ -0,0 +1,76 @@ + + + + + isSelected + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isSelected

+
+
fun isSelected(position: Int, subPosition: Int = 0): ViewAssertion
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/does-not-have-focus.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/does-not-have-focus.html new file mode 100644 index 00000000..fc6b4e59 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/does-not-have-focus.html @@ -0,0 +1,76 @@ + + + + + doesNotHaveFocus + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

doesNotHaveFocus

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/has-focus.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/has-focus.html new file mode 100644 index 00000000..d6c506b7 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/has-focus.html @@ -0,0 +1,76 @@ + + + + + hasFocus + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

hasFocus

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/index.html new file mode 100644 index 00000000..3e9a2068 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/index.html @@ -0,0 +1,145 @@ + + + + + DpadViewAssertions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewAssertions

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-focused.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-focused.html new file mode 100644 index 00000000..2afd727b --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-focused.html @@ -0,0 +1,76 @@ + + + + + isFocused + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFocused

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-not-focused.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-not-focused.html new file mode 100644 index 00000000..c67b3c40 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/-dpad-view-assertions/is-not-focused.html @@ -0,0 +1,76 @@ + + + + + isNotFocused + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isNotFocused

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/index.html new file mode 100644 index 00000000..e61dbac1 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.assertions/index.html @@ -0,0 +1,114 @@ + + + + + com.rubensousa.dpadrecyclerview.testing.assertions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/index.html new file mode 100644 index 00000000..af334712 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/index.html @@ -0,0 +1,100 @@ + + + + + DpadRecyclerViewMatchers + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadRecyclerViewMatchers

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun withDescendantOfItemViewAt(position: Int): Matcher<View>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/with-descendant-of-item-view-at.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/with-descendant-of-item-view-at.html new file mode 100644 index 00000000..7dd0d894 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/-dpad-recycler-view-matchers/with-descendant-of-item-view-at.html @@ -0,0 +1,76 @@ + + + + + withDescendantOfItemViewAt + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

withDescendantOfItemViewAt

+
+
fun withDescendantOfItemViewAt(position: Int): Matcher<View>

Return

a Matcher for a view that's inside a RecyclerView.ViewHolder at position position

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/index.html new file mode 100644 index 00000000..916a4362 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.matchers/index.html @@ -0,0 +1,99 @@ + + + + + com.rubensousa.dpadrecyclerview.testing.matchers + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/-disable-idle-timeout-rule.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/-disable-idle-timeout-rule.html new file mode 100644 index 00000000..b51766e8 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/-disable-idle-timeout-rule.html @@ -0,0 +1,76 @@ + + + + + DisableIdleTimeoutRule + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DisableIdleTimeoutRule

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/apply.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/apply.html new file mode 100644 index 00000000..f09d1955 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/apply.html @@ -0,0 +1,76 @@ + + + + + apply + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

apply

+
+
open override fun apply(base: Statement, description: Description): Statement
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/index.html new file mode 100644 index 00000000..c3c8287a --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/-disable-idle-timeout-rule/index.html @@ -0,0 +1,119 @@ + + + + + DisableIdleTimeoutRule + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DisableIdleTimeoutRule

+
class DisableIdleTimeoutRule : TestRule

Disables the default idle timeout of UiAutomator to speed up key events

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun apply(base: Statement, description: Description): Statement
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/index.html new file mode 100644 index 00000000..a62a09c2 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing.rules/index.html @@ -0,0 +1,99 @@ + + + + + com.rubensousa.dpadrecyclerview.testing.rules + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
class DisableIdleTimeoutRule : TestRule

Disables the default idle timeout of UiAutomator to speed up key events

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/back.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/back.html new file mode 100644 index 00000000..4336e538 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/back.html @@ -0,0 +1,76 @@ + + + + + back + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

back

+
+
fun back(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/click.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/click.html new file mode 100644 index 00000000..f338595c --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/click.html @@ -0,0 +1,76 @@ + + + + + click + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

click

+
+
fun click(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/index.html new file mode 100644 index 00000000..b619e474 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/index.html @@ -0,0 +1,190 @@ + + + + + KeyEvents + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

KeyEvents

+
object KeyEvents
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun back(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun click(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun pressDown(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun pressKey(key: Int, times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun pressLeft(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun pressRight(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun pressUp(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-down.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-down.html new file mode 100644 index 00000000..3153ed2d --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-down.html @@ -0,0 +1,76 @@ + + + + + pressDown + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

pressDown

+
+
fun pressDown(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-key.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-key.html new file mode 100644 index 00000000..89ab2757 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-key.html @@ -0,0 +1,76 @@ + + + + + pressKey + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

pressKey

+
+
fun pressKey(key: Int, times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-left.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-left.html new file mode 100644 index 00000000..b4359d24 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-left.html @@ -0,0 +1,76 @@ + + + + + pressLeft + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

pressLeft

+
+
fun pressLeft(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-right.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-right.html new file mode 100644 index 00000000..3e989ec2 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-right.html @@ -0,0 +1,76 @@ + + + + + pressRight + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

pressRight

+
+
fun pressRight(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-up.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-up.html new file mode 100644 index 00000000..75b9f111 --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/-key-events/press-up.html @@ -0,0 +1,76 @@ + + + + + pressUp + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

pressUp

+
+
fun pressUp(times: Int = 1, delay: Long = DEFAULT_KEY_PRESS_DELAY)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/index.html b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/index.html new file mode 100644 index 00000000..b324eebc --- /dev/null +++ b/api/dpadrecyclerview-testing/com.rubensousa.dpadrecyclerview.testing/index.html @@ -0,0 +1,99 @@ + + + + + com.rubensousa.dpadrecyclerview.testing + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object KeyEvents
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/index.html b/api/dpadrecyclerview-testing/index.html new file mode 100644 index 00000000..8f3d07e2 --- /dev/null +++ b/api/dpadrecyclerview-testing/index.html @@ -0,0 +1,167 @@ + + + + + dpadrecyclerview-testing + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dpadrecyclerview-testing

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview-testing/navigation.html b/api/dpadrecyclerview-testing/navigation.html new file mode 100644 index 00000000..1cd820d5 --- /dev/null +++ b/api/dpadrecyclerview-testing/navigation.html @@ -0,0 +1,422 @@ +
+
+ +
+ +
+ +
+
+ CREATOR +
+
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+ NONE +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+ + + + +
+ +
+ +
+ +
+
+ STANDARD +
+
+
+
+ CIRCULAR +
+
+
+ +
+
+ + + +
+ +
+
+ CREATOR +
+
+
+
+ Edge +
+
+
+ NONE +
+
+
+
+ MIN +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+
+
+ +
+
+ CREATOR +
+
+
+
+ +
+
+ +
+
+ Companion +
+
+
+
+ +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/-view-bounds.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/-view-bounds.html new file mode 100644 index 00000000..02bda93b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/-view-bounds.html @@ -0,0 +1,76 @@ + + + + + ViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewBounds

+
+
constructor(left: Int = 0, top: Int = 0, right: Int = 0, bottom: Int = 0)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/as-rect.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/as-rect.html new file mode 100644 index 00000000..6b0d8906 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/as-rect.html @@ -0,0 +1,76 @@ + + + + + asRect + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

asRect

+
+
fun asRect(): Rect
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/bottom.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/bottom.html new file mode 100644 index 00000000..1ea2cf41 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/bottom.html @@ -0,0 +1,76 @@ + + + + + bottom + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

bottom

+
+
var bottom: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/height.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/height.html new file mode 100644 index 00000000..4b18f11d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/height.html @@ -0,0 +1,76 @@ + + + + + height + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

height

+
+
val height: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/index.html new file mode 100644 index 00000000..821177a5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/index.html @@ -0,0 +1,273 @@ + + + + + ViewBounds + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewBounds

+
data class ViewBounds(var left: Int = 0, var top: Int = 0, var right: Int = 0, var bottom: Int = 0)

Replaces Rect for unit testing purposes

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(left: Int = 0, top: Int = 0, right: Int = 0, bottom: Int = 0)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
var bottom: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val height: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
var left: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
var right: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
var top: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val width: Int
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun asRect(): Rect
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setEmpty()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun toString(): String
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/left.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/left.html new file mode 100644 index 00000000..16dc0de5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/left.html @@ -0,0 +1,76 @@ + + + + + left + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

left

+
+
var left: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-horizontal.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-horizontal.html new file mode 100644 index 00000000..621f454a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-horizontal.html @@ -0,0 +1,76 @@ + + + + + offsetHorizontal + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offsetHorizontal

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-vertical.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-vertical.html new file mode 100644 index 00000000..e49cfd05 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/offset-vertical.html @@ -0,0 +1,76 @@ + + + + + offsetVertical + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offsetVertical

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/right.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/right.html new file mode 100644 index 00000000..7f106a50 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/right.html @@ -0,0 +1,76 @@ + + + + + right + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

right

+
+
var right: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/set-empty.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/set-empty.html new file mode 100644 index 00000000..7126df78 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/set-empty.html @@ -0,0 +1,76 @@ + + + + + setEmpty + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setEmpty

+
+
fun setEmpty()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/to-string.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/to-string.html new file mode 100644 index 00000000..f4c53fb1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/to-string.html @@ -0,0 +1,76 @@ + + + + + toString + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

toString

+
+
open override fun toString(): String
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/top.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/top.html new file mode 100644 index 00000000..8b38f514 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/top.html @@ -0,0 +1,76 @@ + + + + + top + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

top

+
+
var top: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/width.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/width.html new file mode 100644 index 00000000..93457830 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/-view-bounds/width.html @@ -0,0 +1,76 @@ + + + + + width + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

width

+
+
val width: Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/index.html new file mode 100644 index 00000000..e93432be --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/index.html @@ -0,0 +1,133 @@ + + + + + com.rubensousa.dpadrecyclerview.layoutmanager.layout + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
data class ViewBounds(var left: Int = 0, var top: Int = 0, var right: Int = 0, var bottom: Int = 0)

Replaces Rect for unit testing purposes

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-horizontally-by.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-horizontally-by.html new file mode 100644 index 00000000..57647f2a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-horizontally-by.html @@ -0,0 +1,76 @@ + + + + + offsetHorizontallyBy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offsetHorizontallyBy

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-vertically-by.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-vertically-by.html new file mode 100644 index 00000000..551b01ca --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager.layout/offset-vertically-by.html @@ -0,0 +1,76 @@ + + + + + offsetVerticallyBy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offsetVerticallyBy

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/-i-n-v-a-l-i-d_-s-p-a-n_-i-d.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/-i-n-v-a-l-i-d_-s-p-a-n_-i-d.html new file mode 100644 index 00000000..7805be75 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/-i-n-v-a-l-i-d_-s-p-a-n_-i-d.html @@ -0,0 +1,76 @@ + + + + + INVALID_SPAN_ID + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

INVALID_SPAN_ID

+
+
const val INVALID_SPAN_ID: Int

Views that haven't been laid out yet will have this in spanIndex and spanGroupIndex

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/index.html new file mode 100644 index 00000000..a3965402 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-companion/index.html @@ -0,0 +1,100 @@ + + + + + Companion + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+
object Companion
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
const val INVALID_SPAN_ID: Int

Views that haven't been laid out yet will have this in spanIndex and spanGroupIndex

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-dpad-layout-params.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-dpad-layout-params.html new file mode 100644 index 00000000..1381ba81 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/-dpad-layout-params.html @@ -0,0 +1,76 @@ + + + + + DpadLayoutParams + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadLayoutParams

+
+
constructor(context: Context, attrs: AttributeSet)
constructor(width: Int, height: Int)
constructor(source: ViewGroup.MarginLayoutParams)
constructor(source: ViewGroup.LayoutParams)
constructor(source: RecyclerView.LayoutParams)
constructor(source: DpadLayoutParams)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/alignment-anchor.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/alignment-anchor.html new file mode 100644 index 00000000..20077183 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/alignment-anchor.html @@ -0,0 +1,76 @@ + + + + + alignmentAnchor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

alignmentAnchor

+
+

Anchor alignment position. Always applied from start to end

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/index.html new file mode 100644 index 00000000..24814b93 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/index.html @@ -0,0 +1,562 @@ + + + + + DpadLayoutParams + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadLayoutParams

+ +
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(context: Context, attrs: AttributeSet)
constructor(width: Int, height: Int)
constructor(source: ViewGroup.MarginLayoutParams)
constructor(source: ViewGroup.LayoutParams)
constructor(source: RecyclerView.LayoutParams)
constructor(source: DpadLayoutParams)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Anchor alignment position. Always applied from start to end

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
var height: Int
+
+
+
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Current span group index (row index) as of the latest layout pass

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Current span index (column index) as of the latest layout pass

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Current span size as of the latest layout pass

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
var width: Int
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMarginEnd(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMarginStart(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getViewPosition(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun resolveLayoutDirection(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayoutDirection(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMarginEnd(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMargins(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMarginStart(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-group-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-group-index.html new file mode 100644 index 00000000..339e2934 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-group-index.html @@ -0,0 +1,76 @@ + + + + + spanGroupIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

spanGroupIndex

+
+

Current span group index (row index) as of the latest layout pass

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-index.html new file mode 100644 index 00000000..f1cba047 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-index.html @@ -0,0 +1,76 @@ + + + + + spanIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

spanIndex

+
+

Current span index (column index) as of the latest layout pass

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-size.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-size.html new file mode 100644 index 00000000..8668faea --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-dpad-layout-params/span-size.html @@ -0,0 +1,76 @@ + + + + + spanSize + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

spanSize

+
+

Current span size as of the latest layout pass

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/-pivot-layout-manager.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/-pivot-layout-manager.html new file mode 100644 index 00000000..28db5055 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/-pivot-layout-manager.html @@ -0,0 +1,76 @@ + + + + + PivotLayoutManager + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

PivotLayoutManager

+
+
constructor(properties: RecyclerView.LayoutManager.Properties)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-layout-completed-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-layout-completed-listener.html new file mode 100644 index 00000000..5690c850 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-layout-completed-listener.html @@ -0,0 +1,76 @@ + + + + + addOnLayoutCompletedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnLayoutCompletedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-focused-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-focused-listener.html new file mode 100644 index 00000000..41be36de --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-focused-listener.html @@ -0,0 +1,76 @@ + + + + + addOnViewFocusedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnViewFocusedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-holder-selected-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-holder-selected-listener.html new file mode 100644 index 00000000..47db404a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/add-on-view-holder-selected-listener.html @@ -0,0 +1,76 @@ + + + + + addOnViewHolderSelectedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnViewHolderSelectedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-horizontally.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-horizontally.html new file mode 100644 index 00000000..2dd684a4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-horizontally.html @@ -0,0 +1,76 @@ + + + + + canScrollHorizontally + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

canScrollHorizontally

+
+
open override fun canScrollHorizontally(): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-vertically.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-vertically.html new file mode 100644 index 00000000..eb7287c1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/can-scroll-vertically.html @@ -0,0 +1,76 @@ + + + + + canScrollVertically + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

canScrollVertically

+
+
open override fun canScrollVertically(): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/check-layout-params.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/check-layout-params.html new file mode 100644 index 00000000..6708b411 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/check-layout-params.html @@ -0,0 +1,76 @@ + + + + + checkLayoutParams + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

checkLayoutParams

+
+
open override fun checkLayoutParams(layoutParams: RecyclerView.LayoutParams?): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-layout-completed-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-layout-completed-listeners.html new file mode 100644 index 00000000..c5758f54 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-layout-completed-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnLayoutCompletedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnLayoutCompletedListeners

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-focused-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-focused-listeners.html new file mode 100644 index 00000000..424d5e75 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-focused-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnViewFocusedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnViewFocusedListeners

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-holder-selected-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-holder-selected-listeners.html new file mode 100644 index 00000000..c8d79487 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/clear-on-view-holder-selected-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnViewHolderSelectedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnViewHolderSelectedListeners

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-adjacent-prefetch-positions.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-adjacent-prefetch-positions.html new file mode 100644 index 00000000..b7a97959 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-adjacent-prefetch-positions.html @@ -0,0 +1,76 @@ + + + + + collectAdjacentPrefetchPositions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

collectAdjacentPrefetchPositions

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-initial-prefetch-positions.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-initial-prefetch-positions.html new file mode 100644 index 00000000..a8585f5c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/collect-initial-prefetch-positions.html @@ -0,0 +1,76 @@ + + + + + collectInitialPrefetchPositions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

collectInitialPrefetchPositions

+
+
open override fun collectInitialPrefetchPositions(adapterItemCount: Int, layoutPrefetchRegistry: RecyclerView.LayoutManager.LayoutPrefetchRegistry)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-extent.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-extent.html new file mode 100644 index 00000000..42a4ac6c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-extent.html @@ -0,0 +1,76 @@ + + + + + computeHorizontalScrollExtent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeHorizontalScrollExtent

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-offset.html new file mode 100644 index 00000000..70617dd3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-offset.html @@ -0,0 +1,76 @@ + + + + + computeHorizontalScrollOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeHorizontalScrollOffset

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-range.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-range.html new file mode 100644 index 00000000..9523676f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-horizontal-scroll-range.html @@ -0,0 +1,76 @@ + + + + + computeHorizontalScrollRange + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeHorizontalScrollRange

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-scroll-vector-for-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-scroll-vector-for-position.html new file mode 100644 index 00000000..3ba572c4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-scroll-vector-for-position.html @@ -0,0 +1,76 @@ + + + + + computeScrollVectorForPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeScrollVectorForPosition

+
+
open override fun computeScrollVectorForPosition(targetPosition: Int): PointF?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-extent.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-extent.html new file mode 100644 index 00000000..60239599 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-extent.html @@ -0,0 +1,76 @@ + + + + + computeVerticalScrollExtent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeVerticalScrollExtent

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-offset.html new file mode 100644 index 00000000..6333e137 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-offset.html @@ -0,0 +1,76 @@ + + + + + computeVerticalScrollOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeVerticalScrollOffset

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-range.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-range.html new file mode 100644 index 00000000..5caedb1c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/compute-vertical-scroll-range.html @@ -0,0 +1,76 @@ + + + + + computeVerticalScrollRange + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

computeVerticalScrollRange

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-completely-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-completely-visible-item-position.html new file mode 100644 index 00000000..c31dbed1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-completely-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findFirstCompletelyVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findFirstCompletelyVisibleItemPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-visible-item-position.html new file mode 100644 index 00000000..8572f36d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-first-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findFirstVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findFirstVisibleItemPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-completely-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-completely-visible-item-position.html new file mode 100644 index 00000000..22af492c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-completely-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findLastCompletelyVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findLastCompletelyVisibleItemPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-visible-item-position.html new file mode 100644 index 00000000..cfb0be69 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/find-last-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findLastVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findLastVisibleItemPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-default-layout-params.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-default-layout-params.html new file mode 100644 index 00000000..aec333cf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-default-layout-params.html @@ -0,0 +1,76 @@ + + + + + generateDefaultLayoutParams + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

generateDefaultLayoutParams

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-layout-params.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-layout-params.html new file mode 100644 index 00000000..88280770 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/generate-layout-params.html @@ -0,0 +1,76 @@ + + + + + generateLayoutParams + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

generateLayoutParams

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-child-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-child-alignment.html new file mode 100644 index 00000000..1bc41d79 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-child-alignment.html @@ -0,0 +1,76 @@ + + + + + getChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getChildAlignment

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-column-count-for-accessibility.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-column-count-for-accessibility.html new file mode 100644 index 00000000..24621f2e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-column-count-for-accessibility.html @@ -0,0 +1,76 @@ + + + + + getColumnCountForAccessibility + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getColumnCountForAccessibility

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-current-sub-positions.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-current-sub-positions.html new file mode 100644 index 00000000..29d0d64f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-current-sub-positions.html @@ -0,0 +1,76 @@ + + + + + getCurrentSubPositions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getCurrentSubPositions

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-focusable-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-focusable-direction.html new file mode 100644 index 00000000..0f999545 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-focusable-direction.html @@ -0,0 +1,76 @@ + + + + + getFocusableDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getFocusableDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-loop-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-loop-direction.html new file mode 100644 index 00000000..c32a9fad --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-loop-direction.html @@ -0,0 +1,76 @@ + + + + + getLoopDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getLoopDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-alignments.html new file mode 100644 index 00000000..f1941b64 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-alignments.html @@ -0,0 +1,76 @@ + + + + + getMaxPendingAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMaxPendingAlignments

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-moves.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-moves.html new file mode 100644 index 00000000..abfbdcf7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-max-pending-moves.html @@ -0,0 +1,76 @@ + + + + + getMaxPendingMoves + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMaxPendingMoves

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-parent-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-parent-alignment.html new file mode 100644 index 00000000..bc6ebdd1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + getParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getParentAlignment

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-row-count-for-accessibility.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-row-count-for-accessibility.html new file mode 100644 index 00000000..f8e0f9b9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-row-count-for-accessibility.html @@ -0,0 +1,76 @@ + + + + + getRowCountForAccessibility + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getRowCountForAccessibility

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-position.html new file mode 100644 index 00000000..12acfaf6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-position.html @@ -0,0 +1,76 @@ + + + + + getSelectedPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSelectedPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-sub-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-sub-position.html new file mode 100644 index 00000000..d0a0de21 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-selected-sub-position.html @@ -0,0 +1,76 @@ + + + + + getSelectedSubPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSelectedSubPosition

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-smooth-scroll-speed-factor.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-smooth-scroll-speed-factor.html new file mode 100644 index 00000000..34b9de9c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-smooth-scroll-speed-factor.html @@ -0,0 +1,76 @@ + + + + + getSmoothScrollSpeedFactor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSmoothScrollSpeedFactor

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-count.html new file mode 100644 index 00000000..7440c098 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-count.html @@ -0,0 +1,76 @@ + + + + + getSpanCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanCount

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-size-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-size-lookup.html new file mode 100644 index 00000000..7e49687a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/get-span-size-lookup.html @@ -0,0 +1,76 @@ + + + + + getSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanSizeLookup

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/index.html new file mode 100644 index 00000000..f0fd81f5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/index.html @@ -0,0 +1,2834 @@ + + + + + PivotLayoutManager + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

PivotLayoutManager

+

A RecyclerView.LayoutManager that builds the layout around a pivot view.

It behaves similarly to GridLayoutManager with the main difference being how focus is handled.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(properties: RecyclerView.LayoutManager.Properties)
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun addDisappearingView(p0: View, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun addView(p0: View)
open fun addView(p0: View, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun attachView(@NonNull p0: View)
open fun attachView(@NonNull p0: View, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun canScrollHorizontally(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun canScrollVertically(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun checkLayoutParams(layoutParams: RecyclerView.LayoutParams?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun collectInitialPrefetchPositions(adapterItemCount: Int, layoutPrefetchRegistry: RecyclerView.LayoutManager.LayoutPrefetchRegistry)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeScrollVectorForPosition(targetPosition: Int): PointF?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun detachView(@NonNull p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun detachViewAt(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun endAnimation(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getBaseline(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildAt(p0: Int): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildCount(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDecoratedLeft(@NonNull p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDecoratedTop(@NonNull p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getHeight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getHeightMode(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getItemCount(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getItemViewType(@NonNull p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMinimumHeight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMinimumWidth(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingBottom(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingEnd(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingLeft(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingRight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingStart(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingTop(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPosition(@NonNull p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getWidth(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getWidthMode(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun hasFocus(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun ignoreView(@NonNull p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun isAutoMeasureEnabled(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isFocused(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun isLayoutReversed(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun layoutDecorated(@NonNull p0: View, p1: Int, p2: Int, p3: Int, p4: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun layoutDecoratedWithMargins(@NonNull p0: View, p1: Int, p2: Int, p3: Int, p4: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun measureChild(@NonNull p0: View, p1: Int, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun measureChildWithMargins(@NonNull p0: View, p1: Int, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun moveView(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun offsetChildrenVertical(@Px p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onAdapterChanged(oldAdapter: RecyclerView.Adapter<*>?, newAdapter: RecyclerView.Adapter<*>?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onAddFocusables(recyclerView: RecyclerView, views: ArrayList<View>, direction: Int, focusableMode: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onAttachedToWindow(view: RecyclerView)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onInterceptFocusSearch(focused: View, direction: Int): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onItemsAdded(recyclerView: RecyclerView, positionStart: Int, itemCount: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onItemsChanged(recyclerView: RecyclerView)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onItemsMoved(recyclerView: RecyclerView, from: Int, to: Int, itemCount: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onItemsRemoved(recyclerView: RecyclerView, positionStart: Int, itemCount: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onItemsUpdated(@NonNull p0: RecyclerView, p1: Int, p2: Int)
open fun onItemsUpdated(@NonNull p0: RecyclerView, p1: Int, p2: Int, @Nullable p3: Any?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onLayoutCompleted(state: RecyclerView.State)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onRequestChildFocus(parent: RecyclerView, state: RecyclerView.State, child: View, focused: View?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun onRequestFocusInDescendants(direction: Int, previouslyFocusedRect: Rect?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onRestoreInstanceState(state: Parcelable?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onSaveInstanceState(): Parcelable
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun performAccessibilityAction(recycler: RecyclerView.Recycler, state: RecyclerView.State, action: Int, args: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun prepareForDrop(view: View, target: View, x: Int, y: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeAllViews()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeView(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeViewAt(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun requestChildRectangleOnScreen(parent: RecyclerView, child: View, rect: Rect, immediate: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun requestLayout()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scrollToPosition(position: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun selectPosition(position: Int, subPosition: Int, smooth: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun selectSubPosition(subPosition: Int, smooth: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setAlignments(parent: ParentAlignment, child: ChildAlignment, smooth: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setChildAlignment(alignment: ChildAlignment, smooth: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFocusOutAllowed(throughFront: Boolean, throughBack: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFocusOutSideAllowed(throughFront: Boolean, throughBack: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setGravity(gravity: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMeasuredDimension(p0: Int, p1: Int)
open fun setMeasuredDimension(p0: Rect, p1: Int, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setOrientation(orientation: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setParentAlignment(alignment: ParentAlignment, smooth: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setReverseLayout(reverseLayout: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSpanCount(spanCount: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun smoothScrollToPosition(recyclerView: RecyclerView, state: RecyclerView.State, position: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun startSmoothScroll(smoothScroller: RecyclerView.SmoothScroller)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun stopIgnoringView(@NonNull p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-auto-measure-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-auto-measure-enabled.html new file mode 100644 index 00000000..c3a1ec9e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-auto-measure-enabled.html @@ -0,0 +1,76 @@ + + + + + isAutoMeasureEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isAutoMeasureEnabled

+
+
open override fun isAutoMeasureEnabled(): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-focus-search-disabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-focus-search-disabled.html new file mode 100644 index 00000000..e77db845 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-focus-search-disabled.html @@ -0,0 +1,76 @@ + + + + + isFocusSearchDisabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFocusSearchDisabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-enabled.html new file mode 100644 index 00000000..2cec1734 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-enabled.html @@ -0,0 +1,76 @@ + + + + + isLayoutEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isLayoutEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-reversed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-reversed.html new file mode 100644 index 00000000..6e87d205 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/is-layout-reversed.html @@ -0,0 +1,76 @@ + + + + + isLayoutReversed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isLayoutReversed

+
+
open override fun isLayoutReversed(): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-adapter-changed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-adapter-changed.html new file mode 100644 index 00000000..ef61fd86 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-adapter-changed.html @@ -0,0 +1,76 @@ + + + + + onAdapterChanged + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onAdapterChanged

+
+
open override fun onAdapterChanged(oldAdapter: RecyclerView.Adapter<*>?, newAdapter: RecyclerView.Adapter<*>?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-add-focusables.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-add-focusables.html new file mode 100644 index 00000000..7f1fad5c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-add-focusables.html @@ -0,0 +1,76 @@ + + + + + onAddFocusables + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onAddFocusables

+
+
open override fun onAddFocusables(recyclerView: RecyclerView, views: ArrayList<View>, direction: Int, focusableMode: Int): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-attached-to-window.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-attached-to-window.html new file mode 100644 index 00000000..0a1a6020 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-attached-to-window.html @@ -0,0 +1,76 @@ + + + + + onAttachedToWindow + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onAttachedToWindow

+
+
open override fun onAttachedToWindow(view: RecyclerView)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-detached-from-window.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-detached-from-window.html new file mode 100644 index 00000000..8ab8e47a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-detached-from-window.html @@ -0,0 +1,76 @@ + + + + + onDetachedFromWindow + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onDetachedFromWindow

+
+
open override fun onDetachedFromWindow(view: RecyclerView, recycler: RecyclerView.Recycler)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info-for-item.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info-for-item.html new file mode 100644 index 00000000..65570fdb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info-for-item.html @@ -0,0 +1,76 @@ + + + + + onInitializeAccessibilityNodeInfoForItem + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInitializeAccessibilityNodeInfoForItem

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info.html new file mode 100644 index 00000000..501eed47 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-initialize-accessibility-node-info.html @@ -0,0 +1,76 @@ + + + + + onInitializeAccessibilityNodeInfo + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInitializeAccessibilityNodeInfo

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-intercept-focus-search.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-intercept-focus-search.html new file mode 100644 index 00000000..044bade1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-intercept-focus-search.html @@ -0,0 +1,76 @@ + + + + + onInterceptFocusSearch + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInterceptFocusSearch

+
+
open override fun onInterceptFocusSearch(focused: View, direction: Int): View?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-added.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-added.html new file mode 100644 index 00000000..e494b755 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-added.html @@ -0,0 +1,76 @@ + + + + + onItemsAdded + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onItemsAdded

+
+
open override fun onItemsAdded(recyclerView: RecyclerView, positionStart: Int, itemCount: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-changed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-changed.html new file mode 100644 index 00000000..85a84926 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-changed.html @@ -0,0 +1,76 @@ + + + + + onItemsChanged + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onItemsChanged

+
+
open override fun onItemsChanged(recyclerView: RecyclerView)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-moved.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-moved.html new file mode 100644 index 00000000..cc73118e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-moved.html @@ -0,0 +1,76 @@ + + + + + onItemsMoved + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onItemsMoved

+
+
open override fun onItemsMoved(recyclerView: RecyclerView, from: Int, to: Int, itemCount: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-removed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-removed.html new file mode 100644 index 00000000..d7a05ca2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-items-removed.html @@ -0,0 +1,76 @@ + + + + + onItemsRemoved + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onItemsRemoved

+
+
open override fun onItemsRemoved(recyclerView: RecyclerView, positionStart: Int, itemCount: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-children.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-children.html new file mode 100644 index 00000000..6a091ab4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-children.html @@ -0,0 +1,76 @@ + + + + + onLayoutChildren + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onLayoutChildren

+
+
open override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-completed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-completed.html new file mode 100644 index 00000000..158b89af --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-layout-completed.html @@ -0,0 +1,76 @@ + + + + + onLayoutCompleted + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onLayoutCompleted

+
+
open override fun onLayoutCompleted(state: RecyclerView.State)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-child-focus.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-child-focus.html new file mode 100644 index 00000000..a2efdd01 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-child-focus.html @@ -0,0 +1,76 @@ + + + + + onRequestChildFocus + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onRequestChildFocus

+
+
open override fun onRequestChildFocus(parent: RecyclerView, state: RecyclerView.State, child: View, focused: View?): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-focus-in-descendants.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-focus-in-descendants.html new file mode 100644 index 00000000..bba897ae --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-request-focus-in-descendants.html @@ -0,0 +1,76 @@ + + + + + onRequestFocusInDescendants + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onRequestFocusInDescendants

+
+
fun onRequestFocusInDescendants(direction: Int, previouslyFocusedRect: Rect?): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-restore-instance-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-restore-instance-state.html new file mode 100644 index 00000000..da92f3fa --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-restore-instance-state.html @@ -0,0 +1,76 @@ + + + + + onRestoreInstanceState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onRestoreInstanceState

+
+
open override fun onRestoreInstanceState(state: Parcelable?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-save-instance-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-save-instance-state.html new file mode 100644 index 00000000..bdc19e35 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/on-save-instance-state.html @@ -0,0 +1,76 @@ + + + + + onSaveInstanceState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onSaveInstanceState

+
+
open override fun onSaveInstanceState(): Parcelable
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/perform-accessibility-action.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/perform-accessibility-action.html new file mode 100644 index 00000000..57aab6e6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/perform-accessibility-action.html @@ -0,0 +1,76 @@ + + + + + performAccessibilityAction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

performAccessibilityAction

+
+
open override fun performAccessibilityAction(recycler: RecyclerView.Recycler, state: RecyclerView.State, action: Int, args: Bundle?): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/prepare-for-drop.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/prepare-for-drop.html new file mode 100644 index 00000000..773bbb85 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/prepare-for-drop.html @@ -0,0 +1,76 @@ + + + + + prepareForDrop + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

prepareForDrop

+
+
open override fun prepareForDrop(view: View, target: View, x: Int, y: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-layout-completed-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-layout-completed-listener.html new file mode 100644 index 00000000..74e7c561 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-layout-completed-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnLayoutCompletedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnLayoutCompletedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-focused-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-focused-listener.html new file mode 100644 index 00000000..13370015 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-focused-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnViewFocusedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnViewFocusedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-holder-selected-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-holder-selected-listener.html new file mode 100644 index 00000000..b73566aa --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/remove-on-view-holder-selected-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnViewHolderSelectedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnViewHolderSelectedListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/request-child-rectangle-on-screen.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/request-child-rectangle-on-screen.html new file mode 100644 index 00000000..db2c8e20 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/request-child-rectangle-on-screen.html @@ -0,0 +1,76 @@ + + + + + requestChildRectangleOnScreen + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

requestChildRectangleOnScreen

+
+
open override fun requestChildRectangleOnScreen(parent: RecyclerView, child: View, rect: Rect, immediate: Boolean): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-horizontally-by.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-horizontally-by.html new file mode 100644 index 00000000..2a0e8f43 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-horizontally-by.html @@ -0,0 +1,76 @@ + + + + + scrollHorizontallyBy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

scrollHorizontallyBy

+
+
open override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-to-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-to-position.html new file mode 100644 index 00000000..c005d0b2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-to-position.html @@ -0,0 +1,76 @@ + + + + + scrollToPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

scrollToPosition

+
+
open override fun scrollToPosition(position: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-vertically-by.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-vertically-by.html new file mode 100644 index 00000000..ea9be8c8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/scroll-vertically-by.html @@ -0,0 +1,76 @@ + + + + + scrollVerticallyBy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

scrollVerticallyBy

+
+
open override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-position.html new file mode 100644 index 00000000..22294114 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-position.html @@ -0,0 +1,76 @@ + + + + + selectPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

selectPosition

+
+
fun selectPosition(position: Int, subPosition: Int, smooth: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-sub-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-sub-position.html new file mode 100644 index 00000000..106b9c91 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/select-sub-position.html @@ -0,0 +1,76 @@ + + + + + selectSubPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

selectSubPosition

+
+
fun selectSubPosition(subPosition: Int, smooth: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-alignments.html new file mode 100644 index 00000000..d4b53812 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-alignments.html @@ -0,0 +1,76 @@ + + + + + setAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setAlignments

+
+
fun setAlignments(parent: ParentAlignment, child: ChildAlignment, smooth: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-child-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-child-alignment.html new file mode 100644 index 00000000..e51d9d4f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-child-alignment.html @@ -0,0 +1,76 @@ + + + + + setChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setChildAlignment

+
+
fun setChildAlignment(alignment: ChildAlignment, smooth: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-children-drawing-order-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-children-drawing-order-enabled.html new file mode 100644 index 00000000..f1b7a3fb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-children-drawing-order-enabled.html @@ -0,0 +1,76 @@ + + + + + setChildrenDrawingOrderEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setChildrenDrawingOrderEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-extra-layout-space-strategy.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-extra-layout-space-strategy.html new file mode 100644 index 00000000..c611894d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-extra-layout-space-strategy.html @@ -0,0 +1,76 @@ + + + + + setExtraLayoutSpaceStrategy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setExtraLayoutSpaceStrategy

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-allowed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-allowed.html new file mode 100644 index 00000000..f5b09590 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-allowed.html @@ -0,0 +1,76 @@ + + + + + setFocusOutAllowed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusOutAllowed

+
+
fun setFocusOutAllowed(throughFront: Boolean, throughBack: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-side-allowed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-side-allowed.html new file mode 100644 index 00000000..c38fd7ad --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-out-side-allowed.html @@ -0,0 +1,76 @@ + + + + + setFocusOutSideAllowed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusOutSideAllowed

+
+
fun setFocusOutSideAllowed(throughFront: Boolean, throughBack: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-disabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-disabled.html new file mode 100644 index 00000000..28abddc9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-disabled.html @@ -0,0 +1,76 @@ + + + + + setFocusSearchDisabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusSearchDisabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-enabled-during-animations.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-enabled-during-animations.html new file mode 100644 index 00000000..b4621cfe --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focus-search-enabled-during-animations.html @@ -0,0 +1,76 @@ + + + + + setFocusSearchEnabledDuringAnimations + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusSearchEnabledDuringAnimations

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focusable-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focusable-direction.html new file mode 100644 index 00000000..53e679e0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-focusable-direction.html @@ -0,0 +1,76 @@ + + + + + setFocusableDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusableDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-gravity.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-gravity.html new file mode 100644 index 00000000..7cbb1cfe --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-gravity.html @@ -0,0 +1,76 @@ + + + + + setGravity + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setGravity

+
+
fun setGravity(gravity: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-layout-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-layout-enabled.html new file mode 100644 index 00000000..5e82464b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-layout-enabled.html @@ -0,0 +1,76 @@ + + + + + setLayoutEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLayoutEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-loop-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-loop-direction.html new file mode 100644 index 00000000..e8f5bb89 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-loop-direction.html @@ -0,0 +1,76 @@ + + + + + setLoopDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLoopDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-alignments.html new file mode 100644 index 00000000..5eedd2b8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-alignments.html @@ -0,0 +1,76 @@ + + + + + setMaxPendingAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMaxPendingAlignments

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-moves.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-moves.html new file mode 100644 index 00000000..78d9e441 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-max-pending-moves.html @@ -0,0 +1,76 @@ + + + + + setMaxPendingMoves + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMaxPendingMoves

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-on-child-laid-out-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-on-child-laid-out-listener.html new file mode 100644 index 00000000..3c36e5d0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-on-child-laid-out-listener.html @@ -0,0 +1,76 @@ + + + + + setOnChildLaidOutListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnChildLaidOutListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-orientation.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-orientation.html new file mode 100644 index 00000000..adc90cb0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-orientation.html @@ -0,0 +1,76 @@ + + + + + setOrientation + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOrientation

+
+
fun setOrientation(orientation: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-parent-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-parent-alignment.html new file mode 100644 index 00000000..2e563a29 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + setParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setParentAlignment

+
+
fun setParentAlignment(alignment: ParentAlignment, smooth: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-recycle-children-on-detach.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-recycle-children-on-detach.html new file mode 100644 index 00000000..46135ab7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-recycle-children-on-detach.html @@ -0,0 +1,76 @@ + + + + + setRecycleChildrenOnDetach + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setRecycleChildrenOnDetach

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-reverse-layout.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-reverse-layout.html new file mode 100644 index 00000000..338ac514 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-reverse-layout.html @@ -0,0 +1,76 @@ + + + + + setReverseLayout + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setReverseLayout

+
+
fun setReverseLayout(reverseLayout: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-scroll-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-scroll-enabled.html new file mode 100644 index 00000000..0faa451d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-scroll-enabled.html @@ -0,0 +1,76 @@ + + + + + setScrollEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setScrollEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-focus-changes-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-focus-changes-enabled.html new file mode 100644 index 00000000..bc5f55f1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-focus-changes-enabled.html @@ -0,0 +1,76 @@ + + + + + setSmoothFocusChangesEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothFocusChangesEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-scroll-speed-factor.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-scroll-speed-factor.html new file mode 100644 index 00000000..55256ebe --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-smooth-scroll-speed-factor.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollSpeedFactor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollSpeedFactor

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-count.html new file mode 100644 index 00000000..d2b52502 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-count.html @@ -0,0 +1,76 @@ + + + + + setSpanCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanCount

+
+
fun setSpanCount(spanCount: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-size-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-size-lookup.html new file mode 100644 index 00000000..b5a20f8f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/set-span-size-lookup.html @@ -0,0 +1,76 @@ + + + + + setSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanSizeLookup

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/smooth-scroll-to-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/smooth-scroll-to-position.html new file mode 100644 index 00000000..05863614 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/smooth-scroll-to-position.html @@ -0,0 +1,76 @@ + + + + + smoothScrollToPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

smoothScrollToPosition

+
+
open override fun smoothScrollToPosition(recyclerView: RecyclerView, state: RecyclerView.State, position: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/start-smooth-scroll.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/start-smooth-scroll.html new file mode 100644 index 00000000..17baf689 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/start-smooth-scroll.html @@ -0,0 +1,76 @@ + + + + + startSmoothScroll + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

startSmoothScroll

+
+
open override fun startSmoothScroll(smoothScroller: RecyclerView.SmoothScroller)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/supports-predictive-item-animations.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/supports-predictive-item-animations.html new file mode 100644 index 00000000..d4e26570 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/-pivot-layout-manager/supports-predictive-item-animations.html @@ -0,0 +1,76 @@ + + + + + supportsPredictiveItemAnimations + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

supportsPredictiveItemAnimations

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/index.html new file mode 100644 index 00000000..ee7e8a8e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.layoutmanager/index.html @@ -0,0 +1,114 @@ + + + + + com.rubensousa.dpadrecyclerview.layoutmanager + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ + +
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/create.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/create.html new file mode 100644 index 00000000..9f28ed1b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/create.html @@ -0,0 +1,76 @@ + + + + + create + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

create

+
+
fun create(@Px itemSpacing: Int, @Px perpendicularItemSpacing: Int = itemSpacing, @Px edgeSpacing: Int = itemSpacing): DpadGridSpacingDecoration
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/index.html new file mode 100644 index 00000000..401a9619 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/-companion/index.html @@ -0,0 +1,100 @@ + + + + + Companion + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+
object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun create(@Px itemSpacing: Int, @Px perpendicularItemSpacing: Int = itemSpacing, @Px edgeSpacing: Int = itemSpacing): DpadGridSpacingDecoration
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/get-item-offsets.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/get-item-offsets.html new file mode 100644 index 00000000..56879c81 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/get-item-offsets.html @@ -0,0 +1,76 @@ + + + + + getItemOffsets + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItemOffsets

+
+
open override fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)

See also

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/index.html new file mode 100644 index 00000000..98a33fc1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-grid-spacing-decoration/index.html @@ -0,0 +1,164 @@ + + + + + DpadGridSpacingDecoration + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadGridSpacingDecoration

+

An item decoration that applies a spacing to all sides of a view part of a grid.

Parameters

itemSpacing

default spacing between items that share a span group.

perpendicularItemSpacing

spacing between items across different span groups. Default is itemSpacing if not specified.

edgeSpacing

spacing between the start and end edges in the layout orientation. Default is itemSpacing if not specified.

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getItemOffsets(@NonNull p0: Rect, p1: Int, @NonNull p2: RecyclerView)
open override fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSpacingLookup(spacingLookup: DpadSpacingLookup?)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/create.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/create.html new file mode 100644 index 00000000..fa3567e2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/create.html @@ -0,0 +1,76 @@ + + + + + create + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

create

+
+
fun create(@Px itemSpacing: Int, @Px edgeSpacing: Int = itemSpacing, @Px perpendicularEdgeSpacing: Int = 0): DpadLinearSpacingDecoration
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/index.html new file mode 100644 index 00000000..841a8f11 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/-companion/index.html @@ -0,0 +1,100 @@ + + + + + Companion + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+
object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun create(@Px itemSpacing: Int, @Px edgeSpacing: Int = itemSpacing, @Px perpendicularEdgeSpacing: Int = 0): DpadLinearSpacingDecoration
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/get-item-offsets.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/get-item-offsets.html new file mode 100644 index 00000000..aaaf4414 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/get-item-offsets.html @@ -0,0 +1,76 @@ + + + + + getItemOffsets + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItemOffsets

+
+
open override fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)

See also

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/index.html new file mode 100644 index 00000000..8f7326f7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-linear-spacing-decoration/index.html @@ -0,0 +1,164 @@ + + + + + DpadLinearSpacingDecoration + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadLinearSpacingDecoration

+

An item decoration that applies a spacing to all sides of a view part of a Column or Row layout.

Parameters

itemSpacing

spacing between items in the layout direction

edgeSpacing

spacing between the start and end edges in the layout orientation. Default is itemSpacing if not specified.

perpendicularEdgeSpacing

spacing between the edges perpendicular to the layout orientation. Default is 0.

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getItemOffsets(@NonNull p0: Rect, p1: Int, @NonNull p2: RecyclerView)
open override fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSpacingLookup(spacingLookup: DpadSpacingLookup?)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/-dpad-spacing-decoration.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/-dpad-spacing-decoration.html new file mode 100644 index 00000000..c26aa5bf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/-dpad-spacing-decoration.html @@ -0,0 +1,76 @@ + + + + + DpadSpacingDecoration + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSpacingDecoration

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/get-item-offsets.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/get-item-offsets.html new file mode 100644 index 00000000..85caf713 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/get-item-offsets.html @@ -0,0 +1,76 @@ + + + + + getItemOffsets + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getItemOffsets

+
+
abstract fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)

See also


override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/index.html new file mode 100644 index 00000000..be3f3a45 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/index.html @@ -0,0 +1,164 @@ + + + + + DpadSpacingDecoration + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSpacingDecoration

+

A base RecyclerView.ItemDecoration that checks if spacing should be applied for a given position using DpadSpacingLookup.

Subclasses should only be used for instances of DpadRecyclerView and not other RecyclerViews.

Inheritors

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getItemOffsets(@NonNull p0: Rect, p1: Int, @NonNull p2: RecyclerView)
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State)
abstract fun getItemOffsets(outRect: Rect, view: View, layoutPosition: Int, parent: DpadRecyclerView, state: RecyclerView.State)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSpacingLookup(spacingLookup: DpadSpacingLookup?)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/set-spacing-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/set-spacing-lookup.html new file mode 100644 index 00000000..c939d355 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-decoration/set-spacing-lookup.html @@ -0,0 +1,76 @@ + + + + + setSpacingLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpacingLookup

+
+
fun setSpacingLookup(spacingLookup: DpadSpacingLookup?)

Parameters

spacingLookup

an optional DpadSpacingLookup to filter layout positions that shouldn't have spacing applied

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/index.html new file mode 100644 index 00000000..2658b97a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/index.html @@ -0,0 +1,100 @@ + + + + + DpadSpacingLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSpacingLookup

+

Checks if a decoration should be applied for a given RecyclerView.ViewHolder

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun shouldApplySpacing(viewHolder: RecyclerView.ViewHolder, itemCount: Int): Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/should-apply-spacing.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/should-apply-spacing.html new file mode 100644 index 00000000..559ab150 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/-dpad-spacing-lookup/should-apply-spacing.html @@ -0,0 +1,76 @@ + + + + + shouldApplySpacing + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

shouldApplySpacing

+
+
abstract fun shouldApplySpacing(viewHolder: RecyclerView.ViewHolder, itemCount: Int): Boolean

Return

true if the ViewHolder should have spacing applied to

Parameters

viewHolder

the ViewHolder currently in layout

itemCount

the item count at the layout stage. See RecyclerView.State.getItemCount

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/index.html new file mode 100644 index 00000000..b8020045 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.spacing/index.html @@ -0,0 +1,144 @@ + + + + + com.rubensousa.dpadrecyclerview.spacing + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

An item decoration that applies a spacing to all sides of a view part of a grid.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

An item decoration that applies a spacing to all sides of a view part of a Column or Row layout.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

A base RecyclerView.ItemDecoration that checks if spacing should be applied for a given position using DpadSpacingLookup.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Checks if a decoration should be applied for a given RecyclerView.ViewHolder

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/clear.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/clear.html new file mode 100644 index 00000000..abba0183 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/clear.html @@ -0,0 +1,76 @@ + + + + + clear + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clear

+
+
fun clear(key: String)

Parameters

key

RecyclerView identifier of which state should be removed


fun clear()

Clears all scroll states to prevent them from being restored later

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/index.html new file mode 100644 index 00000000..78111fdf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/index.html @@ -0,0 +1,130 @@ + + + + + DpadScrollState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadScrollState

+

Holds the scroll state of nested DpadRecyclerView. Use it to save and restore the scroll state of all RecyclerViews in a single screen.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun clear()

Clears all scroll states to prevent them from being restored later

fun clear(key: String)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun restore(recyclerView: DpadRecyclerView, key: String, adapter: RecyclerView.Adapter<*>)

Call this when the ViewHolder is bound and after adapter contents are updated in RecyclerView.Adapter.onBindViewHolder.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun save(recyclerView: DpadRecyclerView, key: String, detachAdapter: Boolean = true)

Call this when the ViewHolder is recycled in RecyclerView.Adapter.onViewRecycled. This will clear the adapter by default to ensure that children are removed from the layout. To disable this, pass false in detachAdapter

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/restore.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/restore.html new file mode 100644 index 00000000..a00a07d0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/restore.html @@ -0,0 +1,76 @@ + + + + + restore + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

restore

+
+
fun restore(recyclerView: DpadRecyclerView, key: String, adapter: RecyclerView.Adapter<*>)

Call this when the ViewHolder is bound and after adapter contents are updated in RecyclerView.Adapter.onBindViewHolder.

Ensure that adapter contains the dataset before calling this method

Parameters

recyclerView

RecyclerView to be restored

key

unique identifier for recyclerView

adapter

adapter to be bound to this RecyclerView

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/save.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/save.html new file mode 100644 index 00000000..d159a296 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-scroll-state/save.html @@ -0,0 +1,76 @@ + + + + + save + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

save

+
+
fun save(recyclerView: DpadRecyclerView, key: String, detachAdapter: Boolean = true)

Call this when the ViewHolder is recycled in RecyclerView.Adapter.onViewRecycled. This will clear the adapter by default to ensure that children are removed from the layout. To disable this, pass false in detachAdapter

Parameters

recyclerView

RecyclerView to be saved

key

unique identifier for recyclerView

detachAdapter

true to detach the RecyclerView.Adapter or false to skip that behavior. Default: true

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/-dpad-state-registry.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/-dpad-state-registry.html new file mode 100644 index 00000000..8ce0c4cf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/-dpad-state-registry.html @@ -0,0 +1,76 @@ + + + + + DpadStateRegistry + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadStateRegistry

+
+
constructor(registryOwner: SavedStateRegistryOwner)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-scroll-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-scroll-state.html new file mode 100644 index 00000000..9abd52f9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-scroll-state.html @@ -0,0 +1,76 @@ + + + + + getScrollState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getScrollState

+
+

Return

DpadScrollState to save and restore scroll states of DpadRecyclerView

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-view-holder-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-view-holder-state.html new file mode 100644 index 00000000..a2ec5832 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/get-view-holder-state.html @@ -0,0 +1,76 @@ + + + + + getViewHolderState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getViewHolderState

+
+

Return

DpadViewHolderState to save and restore view states of ViewHolders part of a DpadRecyclerView

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/index.html new file mode 100644 index 00000000..0b6c3e9a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/index.html @@ -0,0 +1,149 @@ + + + + + DpadStateRegistry + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadStateRegistry

+

Saves and restores scroll states and ViewHolder states. Check DpadScrollState and DpadViewHolderState for more information.

This class is lifecycle-aware and will contribute to Activity.onSaveInstanceState or Fragment.onSaveInstanceState via SavedStateRegistryOwner, unless setSaveInstanceStateEnabled is used to disable this behavior.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(registryOwner: SavedStateRegistryOwner)
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Control whether state should be saved via Activity.onSaveInstanceState or Fragment.onSaveInstanceState, false otherwise. Default is true.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/set-save-instance-state-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/set-save-instance-state-enabled.html new file mode 100644 index 00000000..dcb667fb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-state-registry/set-save-instance-state-enabled.html @@ -0,0 +1,76 @@ + + + + + setSaveInstanceStateEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSaveInstanceStateEnabled

+
+

Control whether state should be saved via Activity.onSaveInstanceState or Fragment.onSaveInstanceState, false otherwise. Default is true.

Parameters

enabled

true if state should be persisted, false otherwise.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/clear.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/clear.html new file mode 100644 index 00000000..64320c04 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/clear.html @@ -0,0 +1,76 @@ + + + + + clear + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clear

+
+
fun clear(key: String)

Parameters

key

ViewHolder identifier of which state should be removed


fun clear()

Clears all ViewHolder states to prevent them from being restored later

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/index.html new file mode 100644 index 00000000..e7d2209c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/index.html @@ -0,0 +1,130 @@ + + + + + DpadViewHolderState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewHolderState

+

Holds the view hierarchy state of some RecyclerView.ViewHolder. Use saveState to save a RecyclerView.ViewHolder and restoreState to restore its state.

Consider using this when you need to persist some View state (e.g text input) inside your ViewHolders.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun clear()

Clears all ViewHolder states to prevent them from being restored later

fun clear(key: String)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun restoreState(holder: RecyclerView.ViewHolder, key: String, consume: Boolean = false)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/restore-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/restore-state.html new file mode 100644 index 00000000..95083206 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/restore-state.html @@ -0,0 +1,76 @@ + + + + + restoreState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

restoreState

+
+
fun restoreState(holder: RecyclerView.ViewHolder, key: String, consume: Boolean = false)

Parameters

holder

ViewHolder to be restored

key

unique identifier for holder

consume

true to prevent this state from being restored multiple times, or false to still keep it. Default: false

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/save-state.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/save-state.html new file mode 100644 index 00000000..66c9a9b3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/-dpad-view-holder-state/save-state.html @@ -0,0 +1,76 @@ + + + + + saveState + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

saveState

+
+

Parameters

holder

ViewHolder to be saved

key

unique identifier for holder

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/index.html new file mode 100644 index 00000000..1fceaefa --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview.state/index.html @@ -0,0 +1,129 @@ + + + + + com.rubensousa.dpadrecyclerview.state + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Holds the scroll state of nested DpadRecyclerView. Use it to save and restore the scroll state of all RecyclerViews in a single screen.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Saves and restores scroll states and ViewHolder states. Check DpadScrollState and DpadViewHolderState for more information.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Holds the view hierarchy state of some RecyclerView.ViewHolder. Use saveState to save a RecyclerView.ViewHolder and restoreState to restore its state.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/create-from-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/create-from-parcel.html new file mode 100644 index 00000000..8b026dd5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/create-from-parcel.html @@ -0,0 +1,76 @@ + + + + + createFromParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

createFromParcel

+
+
open override fun createFromParcel(parcel: Parcel): ChildAlignment
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/index.html new file mode 100644 index 00000000..3c78b1eb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/index.html @@ -0,0 +1,115 @@ + + + + + CREATOR + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

CREATOR

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun createFromParcel(parcel: Parcel): ChildAlignment
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun newArray(size: Int): Array<ChildAlignment?>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/new-array.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/new-array.html new file mode 100644 index 00000000..17963f5a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-c-r-e-a-t-o-r/new-array.html @@ -0,0 +1,76 @@ + + + + + newArray + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

newArray

+
+
open override fun newArray(size: Int): Array<ChildAlignment?>
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-child-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-child-alignment.html new file mode 100644 index 00000000..b2897bcf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/-child-alignment.html @@ -0,0 +1,76 @@ + + + + + ChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ChildAlignment

+
+
constructor(parcel: Parcel)
constructor(offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, includePadding: Boolean = false, alignToBaseline: Boolean = false)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/align-to-baseline.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/align-to-baseline.html new file mode 100644 index 00000000..16841a52 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/align-to-baseline.html @@ -0,0 +1,76 @@ + + + + + alignToBaseline + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

alignToBaseline

+
+
open override val alignToBaseline: Boolean = false

When true, aligns to View.getBaseline for the view used for the alignment

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/describe-contents.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/describe-contents.html new file mode 100644 index 00000000..dfb97856 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/describe-contents.html @@ -0,0 +1,76 @@ + + + + + describeContents + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

describeContents

+
+
open override fun describeContents(): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/fraction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/fraction.html new file mode 100644 index 00000000..5629d5cc --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/fraction.html @@ -0,0 +1,76 @@ + + + + + fraction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

fraction

+
+
open override val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

Set isFractionEnabled to false in case you want to disable this

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/include-padding.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/include-padding.html new file mode 100644 index 00000000..fc17ac0a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/include-padding.html @@ -0,0 +1,76 @@ + + + + + includePadding + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

includePadding

+
+
open override val includePadding: Boolean = false

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/index.html new file mode 100644 index 00000000..5d2daaaa --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/index.html @@ -0,0 +1,232 @@ + + + + + ChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ChildAlignment

+
data class ChildAlignment(val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val includePadding: Boolean = false, val alignToBaseline: Boolean = false) : ViewAlignment, Parcelable

Alignment configuration for aligning views in relation to its dimensions

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(parcel: Parcel)
constructor(offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, includePadding: Boolean = false, alignToBaseline: Boolean = false)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val alignToBaseline: Boolean = false

When true, aligns to View.getBaseline for the view used for the alignment

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val includePadding: Boolean = false

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val isFractionEnabled: Boolean = true

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val offset: Int

The distance to the fraction of the view in pixels.

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun describeContents(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/is-fraction-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/is-fraction-enabled.html new file mode 100644 index 00000000..2fd9138c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/is-fraction-enabled.html @@ -0,0 +1,76 @@ + + + + + isFractionEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFractionEnabled

+
+
open override val isFractionEnabled: Boolean = true

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/offset.html new file mode 100644 index 00000000..64a31185 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/offset.html @@ -0,0 +1,76 @@ + + + + + offset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offset

+
+
open override val offset: Int

The distance to the fraction of the view in pixels.

E.g fraction = 0.5f, offset = 100, View's height = 500

Keyline position = 500 * 0.5f + 100 = 350

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/write-to-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/write-to-parcel.html new file mode 100644 index 00000000..ab4c9b1d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-child-alignment/write-to-parcel.html @@ -0,0 +1,76 @@ + + + + + writeToParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

writeToParcel

+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-dpad-drag-helper.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-dpad-drag-helper.html new file mode 100644 index 00000000..89429923 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-dpad-drag-helper.html @@ -0,0 +1,80 @@ + + + + + DpadDragHelper + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadDragHelper

+
+
constructor(adapter: DpadDragHelper.DragAdapter<T>, callback: DpadDragHelper.DragCallback, cancelKeyCodes: Set<Int> = setOf( + KeyEvent.KEYCODE_DPAD_CENTER, + KeyEvent.KEYCODE_ENTER, + KeyEvent.KEYCODE_BACK + ))
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/get-mutable-items.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/get-mutable-items.html new file mode 100644 index 00000000..77ba7b98 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/get-mutable-items.html @@ -0,0 +1,76 @@ + + + + + getMutableItems + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMutableItems

+
+
abstract fun getMutableItems(): MutableList<T>

Return

the mutable collection of items backing the adapter

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/index.html new file mode 100644 index 00000000..ae895899 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-adapter/index.html @@ -0,0 +1,100 @@ + + + + + DragAdapter + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DragAdapter

+
interface DragAdapter<T>
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun getMutableItems(): MutableList<T>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/index.html new file mode 100644 index 00000000..b0f97338 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/index.html @@ -0,0 +1,115 @@ + + + + + DragCallback + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DragCallback

+
interface DragCallback
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun onDragStarted(viewHolder: RecyclerView.ViewHolder)

Indicates that the dragging action has started. DpadRecyclerView will receive focus

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun onDragStopped()

Indicates that the dragging action has stopped

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-started.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-started.html new file mode 100644 index 00000000..376be85e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-started.html @@ -0,0 +1,76 @@ + + + + + onDragStarted + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onDragStarted

+
+
abstract fun onDragStarted(viewHolder: RecyclerView.ViewHolder)

Indicates that the dragging action has started. DpadRecyclerView will receive focus

Parameters

viewHolder

the view holder that is being dragged

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-stopped.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-stopped.html new file mode 100644 index 00000000..e2bfb961 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/-drag-callback/on-drag-stopped.html @@ -0,0 +1,76 @@ + + + + + onDragStopped + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onDragStopped

+
+
abstract fun onDragStopped()

Indicates that the dragging action has stopped

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/attach-to-recycler-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/attach-to-recycler-view.html new file mode 100644 index 00000000..f7b718a7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/attach-to-recycler-view.html @@ -0,0 +1,76 @@ + + + + + attachToRecyclerView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

attachToRecyclerView

+
+

Attaches the DpadRecyclerView that will be dragged. This is required before calling startDrag

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/detach-from-recycler-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/detach-from-recycler-view.html new file mode 100644 index 00000000..2f597ae5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/detach-from-recycler-view.html @@ -0,0 +1,76 @@ + + + + + detachFromRecyclerView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

detachFromRecyclerView

+
+

Detaches the previously attached DpadRecyclerView and stops dragging

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/index.html new file mode 100644 index 00000000..4b828900 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/index.html @@ -0,0 +1,225 @@ + + + + + DpadDragHelper + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadDragHelper

+
class DpadDragHelper<T>(adapter: DpadDragHelper.DragAdapter<T>, callback: DpadDragHelper.DragCallback, cancelKeyCodes: Set<Int> = setOf( + KeyEvent.KEYCODE_DPAD_CENTER, + KeyEvent.KEYCODE_ENTER, + KeyEvent.KEYCODE_BACK + ))

A helper class for re-ordering the contents of a DpadRecyclerView.

To use this, your adapter needs to implement DpadDragHelper.DragAdapter and expose the mutable collection via DpadDragHelper.DragAdapter.getMutableItems.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(adapter: DpadDragHelper.DragAdapter<T>, callback: DpadDragHelper.DragCallback, cancelKeyCodes: Set<Int> = setOf( + KeyEvent.KEYCODE_DPAD_CENTER, + KeyEvent.KEYCODE_ENTER, + KeyEvent.KEYCODE_BACK + ))
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
interface DragAdapter<T>
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
interface DragCallback
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

True if the attached DpadRecyclerView is currently in drag mode, false otherwise

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Attaches the DpadRecyclerView that will be dragged. This is required before calling startDrag

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Detaches the previously attached DpadRecyclerView and stops dragging

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun startDrag(position: Int): Boolean

Starts the dragging action for the ViewHolder at position.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun stopDrag()

Cancels the current ongoing dragging action DragCallback.onDragStopped will be called after this method

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/is-dragging.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/is-dragging.html new file mode 100644 index 00000000..82eb0dc7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/is-dragging.html @@ -0,0 +1,76 @@ + + + + + isDragging + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isDragging

+
+

True if the attached DpadRecyclerView is currently in drag mode, false otherwise

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/start-drag.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/start-drag.html new file mode 100644 index 00000000..b92bcd9a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/start-drag.html @@ -0,0 +1,76 @@ + + + + + startDrag + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

startDrag

+
+
fun startDrag(position: Int): Boolean

Starts the dragging action for the ViewHolder at position.

DragCallback.onDragStarted will be called after this method if this returns true

Return

true if the dragging action was started, false otherwise

Parameters

position

the position of the item to be dragged

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/stop-drag.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/stop-drag.html new file mode 100644 index 00000000..f1ced79d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-drag-helper/stop-drag.html @@ -0,0 +1,76 @@ + + + + + stopDrag + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

stopDrag

+
+
fun stopDrag()

Cancels the current ongoing dragging action DragCallback.onDragStopped will be called after this method

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-a-x/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-a-x/index.html new file mode 100644 index 00000000..92f596af --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-a-x/index.html @@ -0,0 +1,115 @@ + + + + + MAX + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

MAX

+

Only allow infinite scrolling from the max edge. When returning to the min edge, stop looping

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-i-n_-m-a-x/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-i-n_-m-a-x/index.html new file mode 100644 index 00000000..74f5a452 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-m-i-n_-m-a-x/index.html @@ -0,0 +1,115 @@ + + + + + MIN_MAX + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

MIN_MAX

+

Mirrors both the min and max edge, so that infinite scroll is supported in both directions

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-n-o-n-e/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-n-o-n-e/index.html new file mode 100644 index 00000000..060a1c4d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/-n-o-n-e/index.html @@ -0,0 +1,115 @@ + + + + + NONE + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

NONE

+

Disable looping the adapter contents

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/entries.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/entries.html new file mode 100644 index 00000000..0e1ada49 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/entries.html @@ -0,0 +1,76 @@ + + + + + entries + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

entries

+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/index.html new file mode 100644 index 00000000..28b8c369 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/index.html @@ -0,0 +1,213 @@ + + + + + DpadLoopDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadLoopDirection

+

Defines how items are looped around in DpadRecyclerView.

Looping is only supported for single span layouts.

If the layout doesn't fill the entire viewport, then looping is disabled

+
+
+
+
+
+

Entries

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Disable looping the adapter contents

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Only allow infinite scrolling from the max edge. When returning to the min edge, stop looping

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Mirrors both the min and max edge, so that infinite scroll is supported in both directions

+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns an array containing the constants of this enum type, in the order they're declared.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/value-of.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/value-of.html new file mode 100644 index 00000000..58d45c7f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/value-of.html @@ -0,0 +1,76 @@ + + + + + valueOf + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

valueOf

+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/values.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/values.html new file mode 100644 index 00000000..dd05ffa8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-loop-direction/values.html @@ -0,0 +1,76 @@ + + + + + values + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

values

+
+

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-dpad-recycler-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-dpad-recycler-view.html new file mode 100644 index 00000000..a063bee7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-dpad-recycler-view.html @@ -0,0 +1,76 @@ + + + + + DpadRecyclerView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadRecyclerView

+
+
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.dpadRecyclerViewStyle)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/index.html new file mode 100644 index 00000000..b9201680 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnKeyInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnKeyInterceptListener

+

Listener for intercepting key dispatch events.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun onInterceptKeyEvent(event: KeyEvent): Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/on-intercept-key-event.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/on-intercept-key-event.html new file mode 100644 index 00000000..6545f2cd --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-key-intercept-listener/on-intercept-key-event.html @@ -0,0 +1,76 @@ + + + + + onInterceptKeyEvent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInterceptKeyEvent

+
+
abstract fun onInterceptKeyEvent(event: KeyEvent): Boolean

Return

true if the key dispatch event should be consumed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/index.html new file mode 100644 index 00000000..93dd2e47 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnLayoutCompletedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnLayoutCompletedListener

+

Listener for receiving notifications of a completed layout pass by the LayoutManager of this RecyclerView

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Called after a full layout calculation has finished.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/on-layout-completed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/on-layout-completed.html new file mode 100644 index 00000000..b8dd4ce2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-layout-completed-listener/on-layout-completed.html @@ -0,0 +1,76 @@ + + + + + onLayoutCompleted + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onLayoutCompleted

+
+

Called after a full layout calculation has finished.

Parameters

state

Transient state of RecyclerView

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/index.html new file mode 100644 index 00000000..c48f08c1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnMotionInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnMotionInterceptListener

+

Listener for intercepting generic motion dispatch events.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/on-intercept-motion-event.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/on-intercept-motion-event.html new file mode 100644 index 00000000..a989a1e1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-motion-intercept-listener/on-intercept-motion-event.html @@ -0,0 +1,76 @@ + + + + + onInterceptMotionEvent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInterceptMotionEvent

+
+

Return

true if the motion event should be consumed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/index.html new file mode 100644 index 00000000..5057e349 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnTouchInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnTouchInterceptListener

+

Listener for intercepting touch dispatch events

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/on-intercept-touch-event.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/on-intercept-touch-event.html new file mode 100644 index 00000000..29b925d8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-touch-intercept-listener/on-intercept-touch-event.html @@ -0,0 +1,76 @@ + + + + + onInterceptTouchEvent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onInterceptTouchEvent

+
+

Return

true if event should be consumed

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/index.html new file mode 100644 index 00000000..5f9e38a6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnUnhandledKeyListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnUnhandledKeyListener

+

Listener for intercepting unhandled key events.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun onUnhandledKey(event: KeyEvent): Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/on-unhandled-key.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/on-unhandled-key.html new file mode 100644 index 00000000..ccc4c3f3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-on-unhandled-key-listener/on-unhandled-key.html @@ -0,0 +1,76 @@ + + + + + onUnhandledKey + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onUnhandledKey

+
+
abstract fun onUnhandledKey(event: KeyEvent): Boolean

Return

true if the key event should be consumed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-duration.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-duration.html new file mode 100644 index 00000000..4e4a8467 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-duration.html @@ -0,0 +1,76 @@ + + + + + configSmoothScrollByDuration + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

configSmoothScrollByDuration

+
+
abstract fun configSmoothScrollByDuration(dx: Int, dy: Int): Int

Defines duration in milliseconds of smoothScrollBy.

Return

Duration in milliseconds or UNDEFINED_DURATION for default value.

Parameters

dx

x distance in pixels.

dy

y distance in pixels.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-interpolator.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-interpolator.html new file mode 100644 index 00000000..33d74302 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/config-smooth-scroll-by-interpolator.html @@ -0,0 +1,76 @@ + + + + + configSmoothScrollByInterpolator + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

configSmoothScrollByInterpolator

+
+

Defines interpolator of smoothScrollBy.

Return

Interpolator to be used or null for default interpolator.

Parameters

dx

x distance in pixels.

dy

y distance in pixels.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/index.html new file mode 100644 index 00000000..a44a1793 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/-smooth-scroll-by-behavior/index.html @@ -0,0 +1,115 @@ + + + + + SmoothScrollByBehavior + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

SmoothScrollByBehavior

+

Defines behavior of duration and interpolator for smoothScrollBy.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun configSmoothScrollByDuration(dx: Int, dy: Int): Int

Defines duration in milliseconds of smoothScrollBy.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Defines interpolator of smoothScrollBy.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-layout-completed-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-layout-completed-listener.html new file mode 100644 index 00000000..5c74c884 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-layout-completed-listener.html @@ -0,0 +1,76 @@ + + + + + addOnLayoutCompletedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnLayoutCompletedListener

+
+

Registers a callback to be invoked when this RecyclerView completes a layout pass.

Parameters

listener

The listener to be invoked.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-focused-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-focused-listener.html new file mode 100644 index 00000000..fbbf8d66 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-focused-listener.html @@ -0,0 +1,76 @@ + + + + + addOnViewFocusedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnViewFocusedListener

+
+

Registers a callback to be invoked when an item has been focused

Parameters

listener

The listener to be invoked.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-holder-selected-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-holder-selected-listener.html new file mode 100644 index 00000000..fdd73d7e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-on-view-holder-selected-listener.html @@ -0,0 +1,76 @@ + + + + + addOnViewHolderSelectedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addOnViewHolderSelectedListener

+
+

Registers a callback to be invoked when an item has been selected

Parameters

listener

The listener to be invoked.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-recycler-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-recycler-listener.html new file mode 100644 index 00000000..3f01bbb1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/add-recycler-listener.html @@ -0,0 +1,76 @@ + + + + + addRecyclerListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

addRecyclerListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-layout-completed-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-layout-completed-listeners.html new file mode 100644 index 00000000..b62b4802 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-layout-completed-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnLayoutCompletedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnLayoutCompletedListeners

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-focused-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-focused-listeners.html new file mode 100644 index 00000000..ba56abec --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-focused-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnViewFocusedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnViewFocusedListeners

+
+

Clears all existing listeners added by addOnViewFocusedListener

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-holder-selected-listeners.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-holder-selected-listeners.html new file mode 100644 index 00000000..bdc67c93 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/clear-on-view-holder-selected-listeners.html @@ -0,0 +1,76 @@ + + + + + clearOnViewHolderSelectedListeners + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clearOnViewHolderSelectedListeners

+
+

Clears all existing listeners added by addOnViewHolderSelectedListener

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-key-event.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-key-event.html new file mode 100644 index 00000000..89255dea --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-key-event.html @@ -0,0 +1,76 @@ + + + + + dispatchKeyEvent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dispatchKeyEvent

+
+
override fun dispatchKeyEvent(event: KeyEvent?): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-touch-event.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-touch-event.html new file mode 100644 index 00000000..fc56ce73 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/dispatch-touch-event.html @@ -0,0 +1,76 @@ + + + + + dispatchTouchEvent + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dispatchTouchEvent

+
+
open override fun dispatchTouchEvent(event: MotionEvent): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-max-edge-fading.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-max-edge-fading.html new file mode 100644 index 00000000..d67863c0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-max-edge-fading.html @@ -0,0 +1,76 @@ + + + + + enableMaxEdgeFading + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

enableMaxEdgeFading

+
+

Enables fading out the max edge to transparent.

Parameters

enable

true if edge fading should be enabled for the right or bottom of the layout

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-min-edge-fading.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-min-edge-fading.html new file mode 100644 index 00000000..621ac864 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/enable-min-edge-fading.html @@ -0,0 +1,76 @@ + + + + + enableMinEdgeFading + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

enableMinEdgeFading

+
+

Enables fading out the min edge to transparent.

Parameters

enable

true if edge fading should be enabled for the left or top of the layout

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-completely-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-completely-visible-item-position.html new file mode 100644 index 00000000..86dd84f4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-completely-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findFirstCompletelyVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findFirstCompletelyVisibleItemPosition

+
+

Similar to LinearLayoutManager.findFirstCompletelyVisibleItemPosition

Return

The adapter position of the first fully visible item or RecyclerView.NO_POSITION if there aren't any fully visible items

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-visible-item-position.html new file mode 100644 index 00000000..8c5890c9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-first-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findFirstVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findFirstVisibleItemPosition

+
+

Similar to LinearLayoutManager.findFirstVisibleItemPosition

Return

The adapter position of the first visible item or RecyclerView.NO_POSITION if there aren't any visible items

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-completely-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-completely-visible-item-position.html new file mode 100644 index 00000000..cdd0c3a7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-completely-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findLastCompletelyVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findLastCompletelyVisibleItemPosition

+
+

Similar to LinearLayoutManager.findLastCompletelyVisibleItemPosition

Return

The adapter position of the last fully visible item or RecyclerView.NO_POSITION if there aren't any fully visible items

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-visible-item-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-visible-item-position.html new file mode 100644 index 00000000..7b1829c3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/find-last-visible-item-position.html @@ -0,0 +1,76 @@ + + + + + findLastVisibleItemPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findLastVisibleItemPosition

+
+

Similar to LinearLayoutManager.findLastVisibleItemPosition

Return

The adapter position of the last visible item or RecyclerView.NO_POSITION if there aren't any visible items

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/focus-search.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/focus-search.html new file mode 100644 index 00000000..579313a0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/focus-search.html @@ -0,0 +1,76 @@ + + + + + focusSearch + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

focusSearch

+
+
override fun focusSearch(direction: Int): View?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-child-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-child-alignment.html new file mode 100644 index 00000000..f3b2acf8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-child-alignment.html @@ -0,0 +1,76 @@ + + + + + getChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getChildAlignment

+
+

Return

the current child alignment configuration

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-current-sub-positions.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-current-sub-positions.html new file mode 100644 index 00000000..5ee40d28 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-current-sub-positions.html @@ -0,0 +1,76 @@ + + + + + getCurrentSubPositions + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getCurrentSubPositions

+
+

Return

the number of available sub positions for the current selected item or 0 if there's none. See DpadViewHolder.getSubPositionAlignments

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-focusable-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-focusable-direction.html new file mode 100644 index 00000000..35daae4e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-focusable-direction.html @@ -0,0 +1,76 @@ + + + + + getFocusableDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getFocusableDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-initial-prefetch-item-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-initial-prefetch-item-count.html new file mode 100644 index 00000000..0625b47c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-initial-prefetch-item-count.html @@ -0,0 +1,76 @@ + + + + + getInitialPrefetchItemCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getInitialPrefetchItemCount

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-loop-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-loop-direction.html new file mode 100644 index 00000000..e57ebb3c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-loop-direction.html @@ -0,0 +1,76 @@ + + + + + getLoopDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getLoopDirection

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-length.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-length.html new file mode 100644 index 00000000..a63e68d0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-length.html @@ -0,0 +1,76 @@ + + + + + getMaxEdgeFadingLength + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMaxEdgeFadingLength

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-offset.html new file mode 100644 index 00000000..d9b4f919 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-max-edge-fading-offset.html @@ -0,0 +1,76 @@ + + + + + getMaxEdgeFadingOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMaxEdgeFadingOffset

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-length.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-length.html new file mode 100644 index 00000000..adb40812 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-length.html @@ -0,0 +1,76 @@ + + + + + getMinEdgeFadingLength + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMinEdgeFadingLength

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-offset.html new file mode 100644 index 00000000..aba19eb6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-min-edge-fading-offset.html @@ -0,0 +1,76 @@ + + + + + getMinEdgeFadingOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getMinEdgeFadingOffset

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-key-intercept-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-key-intercept-listener.html new file mode 100644 index 00000000..1c6b38f1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-key-intercept-listener.html @@ -0,0 +1,76 @@ + + + + + getOnKeyInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getOnKeyInterceptListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-motion-intercept-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-motion-intercept-listener.html new file mode 100644 index 00000000..35a53e1e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-motion-intercept-listener.html @@ -0,0 +1,76 @@ + + + + + getOnMotionInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getOnMotionInterceptListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-unhandled-key-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-unhandled-key-listener.html new file mode 100644 index 00000000..69f1aa59 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-on-unhandled-key-listener.html @@ -0,0 +1,76 @@ + + + + + getOnUnhandledKeyListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getOnUnhandledKeyListener

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-orientation.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-orientation.html new file mode 100644 index 00000000..caccd7eb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-orientation.html @@ -0,0 +1,76 @@ + + + + + getOrientation + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getOrientation

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-parent-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-parent-alignment.html new file mode 100644 index 00000000..e709249b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + getParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getParentAlignment

+
+

Return

the current parent alignment configuration

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-position.html new file mode 100644 index 00000000..7b8e22f5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-position.html @@ -0,0 +1,76 @@ + + + + + getSelectedPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSelectedPosition

+
+

Return

the current selected position or RecyclerView.NO_POSITION if there's none

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-sub-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-sub-position.html new file mode 100644 index 00000000..8e4d734c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-selected-sub-position.html @@ -0,0 +1,76 @@ + + + + + getSelectedSubPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSelectedSubPosition

+
+

Return

the current selected sub position or 0 if there's none

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-alignments.html new file mode 100644 index 00000000..930ba22b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-alignments.html @@ -0,0 +1,76 @@ + + + + + getSmoothScrollMaxPendingAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSmoothScrollMaxPendingAlignments

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-moves.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-moves.html new file mode 100644 index 00000000..8d4f2ebc --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-max-pending-moves.html @@ -0,0 +1,76 @@ + + + + + getSmoothScrollMaxPendingMoves + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSmoothScrollMaxPendingMoves

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-speed-factor.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-speed-factor.html new file mode 100644 index 00000000..d3b85d1f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-smooth-scroll-speed-factor.html @@ -0,0 +1,76 @@ + + + + + getSmoothScrollSpeedFactor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSmoothScrollSpeedFactor

+
+

See setSmoothScrollSpeedFactor.

Return

Factor of how slow the smooth scroller runs. Default value is 1f.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-count.html new file mode 100644 index 00000000..7e4cb418 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-count.html @@ -0,0 +1,76 @@ + + + + + getSpanCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanCount

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-size-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-size-lookup.html new file mode 100644 index 00000000..acb5b5c9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/get-span-size-lookup.html @@ -0,0 +1,76 @@ + + + + + getSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanSizeLookup

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/has-overlapping-rendering.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/has-overlapping-rendering.html new file mode 100644 index 00000000..6e6abf44 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/has-overlapping-rendering.html @@ -0,0 +1,76 @@ + + + + + hasOverlappingRendering + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

hasOverlappingRendering

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/index.html new file mode 100644 index 00000000..2f6956fc --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/index.html @@ -0,0 +1,12753 @@ + + + + + DpadRecyclerView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadRecyclerView

+
open class DpadRecyclerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.dpadRecyclerViewStyle) : RecyclerView

A RecyclerView that scrolls to items on DPAD key events.

Items are aligned based on the following configurations:

This DpadRecyclerView will only scroll automatically when it has focus and receives DPAD key events. To scroll manually to any given item, check setSelectedPosition, setSelectedPositionSmooth and other related methods.

When using wrap_content for the main scrolling direction, DpadRecyclerView will still measure itself to match its parent's size, but will layout all items at once without any recycling.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.dpadRecyclerViewStyle)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for intercepting key dispatch events.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for receiving notifications of a completed layout pass by the LayoutManager of this RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for intercepting generic motion dispatch events.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for intercepting touch dispatch events

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for intercepting unhandled key events.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Defines behavior of duration and interpolator for smoothScrollBy.

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun addFocusables(p0: ArrayList<View>, p1: Int)
open override fun addFocusables(p0: ArrayList<View>, p1: Int, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Registers a callback to be invoked when this RecyclerView completes a layout pass.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Registers a callback to be invoked when an item has been focused

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Registers a callback to be invoked when an item has been selected

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun addTouchables(p0: ArrayList<View>)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun addView(p0: View)
open override fun addView(p0: View, p1: ViewGroup.LayoutParams)
open fun addView(p0: View, p1: Int)
open fun addView(p0: View, p1: Int, p2: ViewGroup.LayoutParams)
open fun addView(p0: View, p1: Int, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun bringChildToFront(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun bringToFront()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun buildLayer()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun callOnClick(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun cancelLongPress()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun childDrawableStateChanged(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun childHasTransientStateChanged(p0: View, p1: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun clearAnimation()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun clearChildFocus(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun clearFocus()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Clears all existing listeners added by addOnViewFocusedListener

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Clears all existing listeners added by addOnViewHolderSelectedListener

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeHorizontalScrollExtent(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeHorizontalScrollOffset(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeHorizontalScrollRange(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun computeScroll()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeVerticalScrollExtent(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeVerticalScrollOffset(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun computeVerticalScrollRange(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchDisplayHint(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchDragEvent(p0: DragEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchDrawableHotspotChanged(p0: Float, p1: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchFinishTemporaryDetach()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun dispatchKeyEvent(event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchKeyEventPreIme(p0: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchKeyShortcutEvent(p0: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchNestedFling(p0: Float, p1: Float, p2: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchNestedPreFling(p0: Float, p1: Float): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchNestedPreScroll(p0: Int, p1: Int, p2: IntArray?, p3: IntArray?): Boolean
open override fun dispatchNestedPreScroll(p0: Int, p1: Int, p2: IntArray?, p3: IntArray?, p4: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchNestedScroll(p0: Int, p1: Int, p2: Int, p3: Int, p4: IntArray?): Boolean
open override fun dispatchNestedScroll(p0: Int, p1: Int, p2: Int, p3: Int, p4: IntArray?, p5: Int): Boolean
override fun dispatchNestedScroll(p0: Int, p1: Int, p2: Int, p3: Int, p4: IntArray?, p5: Int, @NonNull p6: IntArray)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchPointerCaptureChanged(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchSetActivated(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchSetSelected(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchStartTemporaryDetach()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchSystemUiVisibilityChanged(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchTouchEvent(event: MotionEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchUnhandledMove(p0: View, p1: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchWindowFocusChanged(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+ +
+ + + +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dispatchWindowVisibilityChanged(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun draw(@NonNull p0: Canvas)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun drawChild(@NonNull p0: Canvas, p1: View, p2: Long): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables fading out the max edge to transparent.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables fading out the min edge to transparent.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun endViewTransition(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ + + +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun findFocus(): View
+
+
+
+
+ + + +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : View> findViewById(p0: Int): T
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun findViewsWithText(p0: ArrayList<View>, p1: CharSequence, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : View> findViewWithTag(p0: Any): T
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun fling(p0: Int, p1: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun focusableViewAvailable(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun focusSearch(p0: View, p1: Int): View
override fun focusSearch(direction: Int): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun forceLayout()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun gatherTransparentRegion(p0: Region?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getAlpha(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getAutofillType(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getBaseline(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getBottom(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildAt(p0: Int): View
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildCount(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildItemId(@NonNull p0: View): Long
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getChildPosition(@NonNull p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getChildVisibleRect(p0: View, p1: Rect, p2: Point): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getClipBounds(): Rect
open fun getClipBounds(p0: Rect): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getClipToPadding(): Boolean
+
+
+
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDisplay(): Display
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDrawingRect(p0: Rect)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDrawingTime(): Long
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getElevation(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getExplicitStyle(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getFocusable(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getFocusedChild(): View
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getFocusedRect(p0: Rect)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getHandler(): Handler
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getHeight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getHitRect(p0: Rect)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getId(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getLabelFor(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getLayerType(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getLayoutMode(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getLeft(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMatrix(): Matrix
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMinimumHeight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getMinimumWidth(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getNextFocusUpId(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+ +
+ + + +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getOverlay(): ViewGroupOverlay
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingBottom(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingEnd(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingLeft(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingRight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingStart(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPaddingTop(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPivotX(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getPivotY(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getRight(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getRootView(): View
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getRotation(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getRotationX(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getRotationY(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getScaleX(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getScaleY(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getScrollBarSize(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getScrollState(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getSolidColor(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getTag(): Any
open fun getTag(p0: Int): Any
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getTextAlignment(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getTextDirection(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getTop(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getVisibility(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getWidth(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getWindowId(): WindowId
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getX(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getY(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getZ(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun hasFixedSize(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun hasFocus(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun hasFocusable(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun hasNestedScrollingParent(): Boolean
open override fun hasNestedScrollingParent(p0: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun hasTransientState(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun indexOfChild(p0: View): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun invalidate()
open fun invalidate(p0: Rect)
open fun invalidate(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun invalidateChild(p0: View, p1: Rect)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun invalidateChildInParent(p0: IntArray, p1: Rect): ViewParent
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun invalidateDrawable(p0: Drawable)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isActivated(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isAnimating(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun isAttachedToWindow(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isClickable(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isCredential(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isDirty(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isEnabled(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isFocused(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isHovered(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isInEditMode(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isInLayout(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isLaidOut(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns if views are laid out from the opposite direction of the layout.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun isLayoutSuppressed(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun isNestedScrollingEnabled(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isOpaque(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isPivotSet(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isPressed(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isSelected(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun isShown(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun jumpDrawablesToCurrentState()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun layout(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun measure(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun nestedScrollBy(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun notifySubtreeAccessibilityStateChanged(p0: View, p1: View, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun offsetChildrenVertical(@Px p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun offsetLeftAndRight(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun offsetTopAndBottom(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onDescendantInvalidated(p0: View, p1: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onDraw(@NonNull p0: Canvas)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onDrawForeground(p0: Canvas)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onGenericMotionEvent(p0: MotionEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onHoverChanged(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onInterceptTouchEvent(p0: MotionEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onKeyDown(p0: Int, p1: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onKeyLongPress(p0: Int, p1: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onKeyMultiple(p0: Int, p1: Int, p2: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyPreIme(p0: Int, p1: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyShortcut(p0: Int, p1: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onKeyUp(p0: Int, p1: KeyEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedFling(p0: View, p1: Float, p2: Float, p3: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedPreFling(p0: View, p1: Float, p2: Float): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedPrePerformAccessibilityAction(p0: View, p1: Int, p2: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedPreScroll(p0: View, p1: Int, p2: Int, p3: IntArray)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedScroll(p0: View, p1: Int, p2: Int, p3: Int, p4: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onNestedScrollAccepted(p0: View, p1: View, p2: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onResolvePointerIcon(p0: MotionEvent, p1: Int): PointerIcon
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun onRtlPropertiesChanged(layoutDirection: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onScrolled(@Px p0: Int, @Px p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onScrollStateChanged(state: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onStartNestedScroll(p0: View, p1: View, p2: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onStopNestedScroll(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onTouchEvent(p0: MotionEvent): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onViewAdded(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onViewRemoved(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun performClick(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun playSoundEffect(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun post(p0: Runnable): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun postDelayed(p0: Runnable, p1: Long): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun postInvalidate()
open fun postInvalidate(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun postInvalidateDelayed(p0: Long, p1: Int, p2: Int, p3: Int, p4: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun postInvalidateOnAnimation(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun recomputeViewAttributes(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeAllViews()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+ +
+ + + +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun removeView(view: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun removeViewAt(index: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeViewInLayout(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeViews(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeViewsInLayout(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun requestChildFocus(p0: View, p1: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun requestChildRectangleOnScreen(p0: View, p1: Rect, p2: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun requestFocus(p0: Int, p1: Rect): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun requestLayout()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun requestTransparentRegion(p0: View)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : View> requireViewById(p0: Int): T & Any
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun resetPivot()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun restoreDefaultFocus(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scheduleDrawable(p0: Drawable, p1: Runnable, p2: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scrollBy(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun scrollTo(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun scrollToPosition(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun sendAccessibilityEvent(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setActivated(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setAlignments(parent: ParentAlignment, child: ChildAlignment, smooth: Boolean)

Updates both parent and child alignments

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setAlpha(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setAnimation(p0: Animation)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setAnimationMatrix(p0: Matrix?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setAutofillHints(vararg p0: String)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setAutofillId(p0: AutofillId?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setBackground(p0: Drawable)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setBackgroundColor(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setBottom(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setCameraDistance(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setChildAlignment(alignment: ChildAlignment, smooth: Boolean = false)

Updates the child alignment configuration for child views of this RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setClickable(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setClipBounds(p0: Rect)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setClipChildren(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun setClipToPadding(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setElevation(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setEnabled(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the strategy for calculating extra layout space.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun setFadingEdgeLength(length: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setFocusable(p0: Boolean)
open fun setFocusable(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Changes how RecyclerView will find the next focusable view. Check FocusableDirection for all supported directions. Default is FocusableDirection.STANDARD

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables or disables the default rule of drawing the selected view after all other views. Default is true

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFocusOutAllowed(throughFront: Boolean, throughBack: Boolean)

Sets whether focus can move out from the front and/or back of the RecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFocusOutSideAllowed(throughFront: Boolean, throughBack: Boolean)

Sets whether focus can move out from the opposite front and/or back of the RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Disables or enables focus search.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Disables or enables focus search while RecyclerView is animating item changes. See RecyclerView.isAnimating.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setForeground(p0: Drawable)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setGravity(gravity: Int)

Sets the gravity used for child view positioning. Defaults to Gravity.TOP for horizontal orientation and Gravity.START for vertical orientation.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setHandwritingBoundsOffsets(p0: Float, p1: Float, p2: Float, p3: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun setHasFixedSize(hasFixedSize: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Controls the return value of View.hasOverlappingRendering.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setHovered(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setId(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the number of items to prefetch in RecyclerView.LayoutManager.collectInitialPrefetchPositions, which defines how many inner items should be prefetched when this RecyclerView is nested inside another RecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setIsCredential(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setKeepScreenOn(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLabelFor(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayerPaint(p0: Paint?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayerType(p0: Int, p1: Paint?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayoutDirection(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Allows disabling the layout of children. All children are removed if layout is disabled

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayoutFrozen(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLayoutMode(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun setLayoutTransition(p0: LayoutTransition)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

By default, DpadRecyclerView does not skip layout requests during scrolling, but you might want to do this because of the following:

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setLeft(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setLeftTopRightBottom(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Updates the loop direction used by this DpadRecyclerView. By default, the layout does not loop around the items

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the length of the fading effect applied to the max edge in pixels

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the length of the fading effect applied to the min edge in pixels

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the length of the fading effect applied to the min edge in pixels

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the start position of the fading effect applied to the min edge in pixels. Default is 0, which means that the fading effect starts from the min edge (left or top)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMinimumHeight(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setMinimumWidth(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun setNestedScrollingEnabled(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setNextFocusDownId(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setNextFocusLeftId(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setNextFocusRightId(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setNextFocusUpId(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Registers a callback to be invoked when an item of this DpadRecyclerView has been laid out.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Set a listener that intercepts key events received in dispatchKeyEvent

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the generic motion intercept listener.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ + + +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets a listener for intercepting touch events

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Set a listener that intercepts unhandled key events from dispatchKeyEvent

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setOrientation(orientation: Int)

Updates the orientation of the PivotLayoutManager used by this RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setOverScrollMode(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setPadding(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setPaddingRelative(p0: Int, p1: Int, p2: Int, p3: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setParentAlignment(alignment: ParentAlignment, smooth: Boolean = false)

Updates the parent alignment configuration for child views of this RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setPivotX(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setPivotY(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setPressed(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Set whether the LayoutManager of this RecyclerView will recycle its children when this RecyclerView is detached from the window.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setReverseLayout(reverseLayout: Boolean)

Used to reverse item traversal and layout order. This behaves similar to the layout change for RTL views. When set to true, first item is laid out at the end of the UI, second item is laid out before it etc.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setRight(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setRotation(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setRotationX(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setRotationY(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setSaveEnabled(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScaleX(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScaleY(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScrollBarSize(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScrollBarStyle(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables or disables scrolling. When this is disabled, DpadRecyclerView can still change focus on DPAD events unless setFocusSearchDisabled is also set.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScrollIndicators(p0: Int)
open fun setScrollIndicators(p0: Int, p1: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScrollX(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setScrollY(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setSelected(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSelectedPosition(position: Int)

Changes the selected item immediately without any scroll animation.

fun setSelectedPosition(position: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position after scrolling to it.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Changes the selected item and runs an animation to scroll to the target position.

Performs a task on a ViewHolder at a given position after scrolling to it.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSelectedSubPosition(subPosition: Int)

Changes the sub selected view immediately without any scroll animation.

fun setSelectedSubPosition(position: Int, subPosition: Int)

Changes the main selection and sub selected view immediately without any scroll animation.

fun setSelectedSubPosition(position: Int, subPosition: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position and sub position after scrolling to it.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSelectedSubPositionSmooth(position: Int, subPosition: Int)

Changes the sub selected view and runs and animation to scroll to it.

fun setSelectedSubPositionSmooth(position: Int, subPosition: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position and sub position after scrolling to it.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enable or disable smooth scrolling to new focused position. By default, this is set to true. When set to false, RecyclerView will scroll immediately to the focused view without any animation.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Whenever the user triggers a focus change via a key event, DpadRecyclerView will check if it already has max number of pending alignment changes before dispatching focus to the next view.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

When the user holds down a key, a lot of key events will be generated by the system. These events are generated a lot faster than this DpadRecyclerView can scroll, so these events need to be cached until the user stops pressing the key.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSmoothScrollSpeedFactor(smoothScrollSpeedFactor: Float)

Set how slow the smooth scroller should run. Example:

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSpanCount(spans: Int)

Updates the number of spans of the PivotLayoutManager used by this RecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Updates the DpadSpanSizeLookup used by the layout manager of this RecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTag(p0: Any)
open fun setTag(p0: Int, p1: Any)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTextAlignment(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTextDirection(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setTop(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTranslationX(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTranslationY(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTranslationZ(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setVisibility(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun setWillNotDraw(willNotDraw: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setX(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setY(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setZ(p0: Float)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun showContextMenu(p0: Float, p1: Float): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun showContextMenuForChild(p0: View): Boolean
open override fun showContextMenuForChild(p0: View, p1: Float, p2: Float): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun smoothScrollBy(@Px p0: Int, @Px p1: Int, @Nullable p2: Interpolator?, p3: Int)
override fun smoothScrollBy(dx: Int, dy: Int)
override fun smoothScrollBy(dx: Int, dy: Int, interpolator: Interpolator?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun startNestedScroll(p0: Int): Boolean
open override fun startNestedScroll(axes: Int, type: Int): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun stopNestedScroll()
open override fun stopNestedScroll(p0: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun stopScroll()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
override fun suppressLayout(p0: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun toString(): String
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun unscheduleDrawable(p0: Drawable, p1: Runnable)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun updateViewLayout(p0: View, p1: ViewGroup.LayoutParams)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun willNotDraw(): Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-drawing-order-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-drawing-order-enabled.html new file mode 100644 index 00000000..d7ce25e0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-drawing-order-enabled.html @@ -0,0 +1,76 @@ + + + + + isFocusDrawingOrderEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFocusDrawingOrderEnabled

+
+

See setFocusDrawingOrderEnabled

Return

true if the selected child view is drawn at last, false otherwise

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-search-disabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-search-disabled.html new file mode 100644 index 00000000..6f81a666 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-focus-search-disabled.html @@ -0,0 +1,76 @@ + + + + + isFocusSearchDisabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFocusSearchDisabled

+
+

Return

True if focus search is disabled.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-item-prefetch-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-item-prefetch-enabled.html new file mode 100644 index 00000000..90874b19 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-item-prefetch-enabled.html @@ -0,0 +1,76 @@ + + + + + isItemPrefetchEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isItemPrefetchEnabled

+
+

See RecyclerView.LayoutManager.isItemPrefetchEnabled

Return

True if items should be prefetched in between traversals.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-enabled.html new file mode 100644 index 00000000..ec67251d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-enabled.html @@ -0,0 +1,76 @@ + + + + + isLayoutEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isLayoutEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-reversed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-reversed.html new file mode 100644 index 00000000..55342c42 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-layout-reversed.html @@ -0,0 +1,76 @@ + + + + + isLayoutReversed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isLayoutReversed

+
+

Returns if views are laid out from the opposite direction of the layout.

Return

If layout is reversed or not.

See also

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-max-edge-fading-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-max-edge-fading-enabled.html new file mode 100644 index 00000000..27a8ef0c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-max-edge-fading-enabled.html @@ -0,0 +1,76 @@ + + + + + isMaxEdgeFadingEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isMaxEdgeFadingEnabled

+
+

Return

true if edge fading is enabled for the right or bottom of the layout

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-min-edge-fading-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-min-edge-fading-enabled.html new file mode 100644 index 00000000..8ef65680 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-min-edge-fading-enabled.html @@ -0,0 +1,76 @@ + + + + + isMinEdgeFadingEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isMinEdgeFadingEnabled

+
+

Return

true if edge fading is enabled for the left or top of the layout

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-scroll-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-scroll-enabled.html new file mode 100644 index 00000000..76f890e3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/is-scroll-enabled.html @@ -0,0 +1,76 @@ + + + + + isScrollEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isScrollEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-rtl-properties-changed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-rtl-properties-changed.html new file mode 100644 index 00000000..fe46a390 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-rtl-properties-changed.html @@ -0,0 +1,76 @@ + + + + + onRtlPropertiesChanged + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onRtlPropertiesChanged

+
+
override fun onRtlPropertiesChanged(layoutDirection: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-scroll-state-changed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-scroll-state-changed.html new file mode 100644 index 00000000..c666eaba --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/on-scroll-state-changed.html @@ -0,0 +1,76 @@ + + + + + onScrollStateChanged + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onScrollStateChanged

+
+
open override fun onScrollStateChanged(state: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-layout-completed-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-layout-completed-listener.html new file mode 100644 index 00000000..620ce779 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-layout-completed-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnLayoutCompletedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnLayoutCompletedListener

+
+

Removes a listener added by addOnLayoutCompletedListener

Parameters

listener

The listener to be removed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-focused-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-focused-listener.html new file mode 100644 index 00000000..33a4c7da --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-focused-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnViewFocusedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnViewFocusedListener

+
+

Removes a listener added by addOnViewFocusedListener

Parameters

listener

The listener to be removed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-holder-selected-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-holder-selected-listener.html new file mode 100644 index 00000000..457838bc --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-on-view-holder-selected-listener.html @@ -0,0 +1,76 @@ + + + + + removeOnViewHolderSelectedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeOnViewHolderSelectedListener

+
+

Removes a listener added by addOnViewHolderSelectedListener

Parameters

listener

The listener to be removed.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view-at.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view-at.html new file mode 100644 index 00000000..b0530254 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view-at.html @@ -0,0 +1,76 @@ + + + + + removeViewAt + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeViewAt

+
+
override fun removeViewAt(index: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view.html new file mode 100644 index 00000000..493d11f5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/remove-view.html @@ -0,0 +1,76 @@ + + + + + removeView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

removeView

+
+
override fun removeView(view: View)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/request-layout.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/request-layout.html new file mode 100644 index 00000000..4710ff1c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/request-layout.html @@ -0,0 +1,76 @@ + + + + + requestLayout + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

requestLayout

+
+
override fun requestLayout()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-alignments.html new file mode 100644 index 00000000..f6a77ac2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-alignments.html @@ -0,0 +1,76 @@ + + + + + setAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setAlignments

+
+
fun setAlignments(parent: ParentAlignment, child: ChildAlignment, smooth: Boolean)

Updates both parent and child alignments

Parameters

parent

the parent alignment configuration

child

the child alignment configuration

smooth

true if the alignment change should be animated

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-alignment.html new file mode 100644 index 00000000..5e1d457c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-alignment.html @@ -0,0 +1,76 @@ + + + + + setChildAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setChildAlignment

+
+
fun setChildAlignment(alignment: ChildAlignment, smooth: Boolean = false)

Updates the child alignment configuration for child views of this RecyclerView

Parameters

alignment

the child alignment configuration

smooth

true if the alignment change should be animated

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-drawing-order-callback.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-drawing-order-callback.html new file mode 100644 index 00000000..1018eb29 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-child-drawing-order-callback.html @@ -0,0 +1,76 @@ + + + + + setChildDrawingOrderCallback + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setChildDrawingOrderCallback

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-extra-layout-space-strategy.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-extra-layout-space-strategy.html new file mode 100644 index 00000000..8d0cd928 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-extra-layout-space-strategy.html @@ -0,0 +1,76 @@ + + + + + setExtraLayoutSpaceStrategy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setExtraLayoutSpaceStrategy

+
+

Sets the strategy for calculating extra layout space.

Note that this is not supported if DpadLoopDirection is used since that would potentially lead to duplicate items in the layout.

Check ExtraLayoutSpaceStrategy for more information.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-fading-edge-length.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-fading-edge-length.html new file mode 100644 index 00000000..a0955620 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-fading-edge-length.html @@ -0,0 +1,76 @@ + + + + + setFadingEdgeLength + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFadingEdgeLength

+
+
override fun setFadingEdgeLength(length: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-drawing-order-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-drawing-order-enabled.html new file mode 100644 index 00000000..40b7569c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-drawing-order-enabled.html @@ -0,0 +1,76 @@ + + + + + setFocusDrawingOrderEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusDrawingOrderEnabled

+
+

Enables or disables the default rule of drawing the selected view after all other views. Default is true

Parameters

enabled

True to draw the selected child at last, false otherwise.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-allowed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-allowed.html new file mode 100644 index 00000000..16f64e14 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-allowed.html @@ -0,0 +1,76 @@ + + + + + setFocusOutAllowed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusOutAllowed

+
+
fun setFocusOutAllowed(throughFront: Boolean, throughBack: Boolean)

Sets whether focus can move out from the front and/or back of the RecyclerView.

Parameters

throughFront

For the vertical orientation, this controls whether focus can move out from the top. For the horizontal orientation, this controls whether focus can move out the left or right (in RTL) side of the grid.

throughBack

For the vertical orientation, this controls whether focus can move out from the bottom. For the horizontal orientation, this controls whether focus can move out the right or left (in RTL) side of the grid.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-side-allowed.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-side-allowed.html new file mode 100644 index 00000000..d76ba3ef --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-out-side-allowed.html @@ -0,0 +1,76 @@ + + + + + setFocusOutSideAllowed + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusOutSideAllowed

+
+
fun setFocusOutSideAllowed(throughFront: Boolean, throughBack: Boolean)

Sets whether focus can move out from the opposite front and/or back of the RecyclerView

Parameters

throughFront

For the vertical orientation, this controls whether focus can move out from the left of the grid. For the horizontal orientation, this controls whether focus can move out the top side of the grid.

throughBack

For the vertical orientation, this controls whether focus can move out from the right of the grid. For the horizontal orientation, this controls whether focus can move out the bottom side of the grid.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-disabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-disabled.html new file mode 100644 index 00000000..d72beb6e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-disabled.html @@ -0,0 +1,76 @@ + + + + + setFocusSearchDisabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusSearchDisabled

+
+

Disables or enables focus search.

Parameters

disabled

True to disable focus search, false to enable.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-enabled-during-animations.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-enabled-during-animations.html new file mode 100644 index 00000000..f37c9111 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focus-search-enabled-during-animations.html @@ -0,0 +1,76 @@ + + + + + setFocusSearchEnabledDuringAnimations + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusSearchEnabledDuringAnimations

+
+

Disables or enables focus search while RecyclerView is animating item changes. See RecyclerView.isAnimating.

This is disabled by default.

Parameters

enabled

True to enable focus search while RecyclerView is animating item changes, or false to disable

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focusable-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focusable-direction.html new file mode 100644 index 00000000..ac8a9702 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-focusable-direction.html @@ -0,0 +1,76 @@ + + + + + setFocusableDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setFocusableDirection

+
+

Changes how RecyclerView will find the next focusable view. Check FocusableDirection for all supported directions. Default is FocusableDirection.STANDARD

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-gravity.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-gravity.html new file mode 100644 index 00000000..2e57f5d4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-gravity.html @@ -0,0 +1,76 @@ + + + + + setGravity + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setGravity

+
+
fun setGravity(gravity: Int)

Sets the gravity used for child view positioning. Defaults to Gravity.TOP for horizontal orientation and Gravity.START for vertical orientation.

This is only supported for single rows (i.e 1 span)

Parameters

gravity
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-fixed-size.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-fixed-size.html new file mode 100644 index 00000000..018a058b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-fixed-size.html @@ -0,0 +1,76 @@ + + + + + setHasFixedSize + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setHasFixedSize

+
+
override fun setHasFixedSize(hasFixedSize: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-overlapping-rendering.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-overlapping-rendering.html new file mode 100644 index 00000000..a6138af3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-has-overlapping-rendering.html @@ -0,0 +1,76 @@ + + + + + setHasOverlappingRendering + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setHasOverlappingRendering

+
+

Controls the return value of View.hasOverlappingRendering.

Parameters

enabled

true if overlapping rendering is enabled. Default is true

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-initial-prefetch-item-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-initial-prefetch-item-count.html new file mode 100644 index 00000000..4aecd4b2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-initial-prefetch-item-count.html @@ -0,0 +1,76 @@ + + + + + setInitialPrefetchItemCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setInitialPrefetchItemCount

+
+

Sets the number of items to prefetch in RecyclerView.LayoutManager.collectInitialPrefetchPositions, which defines how many inner items should be prefetched when this RecyclerView is nested inside another RecyclerView.

Parameters

itemCount

Number of items to prefetch

See also

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-animator.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-animator.html new file mode 100644 index 00000000..84752049 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-animator.html @@ -0,0 +1,76 @@ + + + + + setItemAnimator + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setItemAnimator

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-prefetch-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-prefetch-enabled.html new file mode 100644 index 00000000..32051a7a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-item-prefetch-enabled.html @@ -0,0 +1,76 @@ + + + + + setItemPrefetchEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setItemPrefetchEnabled

+
+

See RecyclerView.LayoutManager.setItemPrefetchEnabled

Parameters

enabled

True if items should be prefetched in between traversals.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-enabled.html new file mode 100644 index 00000000..dcb8baa3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-enabled.html @@ -0,0 +1,76 @@ + + + + + setLayoutEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLayoutEnabled

+
+

Allows disabling the layout of children. All children are removed if layout is disabled

Parameters

enabled

true to enable layout, false otherwise.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-manager.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-manager.html new file mode 100644 index 00000000..91d227a8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-manager.html @@ -0,0 +1,76 @@ + + + + + setLayoutManager + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLayoutManager

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-while-scrolling-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-while-scrolling-enabled.html new file mode 100644 index 00000000..8f4f680c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-layout-while-scrolling-enabled.html @@ -0,0 +1,76 @@ + + + + + setLayoutWhileScrollingEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLayoutWhileScrollingEnabled

+
+

By default, DpadRecyclerView does not skip layout requests during scrolling, but you might want to do this because of the following:

  1. Compose animations trigger a full unnecessary layout-pass

  2. Content jumping around while scrolling is not ideal sometimes

Parameters

enabled

true if layout requests should be possible while scrolling, or false if they should be postponed until RecyclerView.SCROLL_STATE_IDLE. Default is true.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-loop-direction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-loop-direction.html new file mode 100644 index 00000000..b0af6188 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-loop-direction.html @@ -0,0 +1,76 @@ + + + + + setLoopDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setLoopDirection

+
+

Updates the loop direction used by this DpadRecyclerView. By default, the layout does not loop around the items

Parameters

loopDirection

the DpadLoopDirection to use for looping items

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-length.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-length.html new file mode 100644 index 00000000..2335ea74 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-length.html @@ -0,0 +1,76 @@ + + + + + setMaxEdgeFadingLength + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMaxEdgeFadingLength

+
+

Sets the length of the fading effect applied to the max edge in pixels

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-offset.html new file mode 100644 index 00000000..dc93e91f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-max-edge-fading-offset.html @@ -0,0 +1,76 @@ + + + + + setMaxEdgeFadingOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMaxEdgeFadingOffset

+
+

Sets the length of the fading effect applied to the min edge in pixels

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-length.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-length.html new file mode 100644 index 00000000..59cfb26d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-length.html @@ -0,0 +1,76 @@ + + + + + setMinEdgeFadingLength + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMinEdgeFadingLength

+
+

Sets the length of the fading effect applied to the min edge in pixels

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-offset.html new file mode 100644 index 00000000..fd067934 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-min-edge-fading-offset.html @@ -0,0 +1,76 @@ + + + + + setMinEdgeFadingOffset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMinEdgeFadingOffset

+
+

Sets the start position of the fading effect applied to the min edge in pixels. Default is 0, which means that the fading effect starts from the min edge (left or top)

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-child-laid-out-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-child-laid-out-listener.html new file mode 100644 index 00000000..f9aa9791 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-child-laid-out-listener.html @@ -0,0 +1,76 @@ + + + + + setOnChildLaidOutListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnChildLaidOutListener

+
+

Registers a callback to be invoked when an item of this DpadRecyclerView has been laid out.

Parameters

listener

the listener to be invoked.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-key-intercept-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-key-intercept-listener.html new file mode 100644 index 00000000..16768452 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-key-intercept-listener.html @@ -0,0 +1,76 @@ + + + + + setOnKeyInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnKeyInterceptListener

+
+

Set a listener that intercepts key events received in dispatchKeyEvent

Parameters

listener

The key intercept listener.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-motion-intercept-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-motion-intercept-listener.html new file mode 100644 index 00000000..04a1d597 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-motion-intercept-listener.html @@ -0,0 +1,76 @@ + + + + + setOnMotionInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnMotionInterceptListener

+
+

Sets the generic motion intercept listener.

Parameters

listener

The motion intercept listener.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-touch-intercept-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-touch-intercept-listener.html new file mode 100644 index 00000000..2d6bda33 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-touch-intercept-listener.html @@ -0,0 +1,76 @@ + + + + + setOnTouchInterceptListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnTouchInterceptListener

+
+

Sets a listener for intercepting touch events

Parameters

listener

the touch intercept listener

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-unhandled-key-listener.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-unhandled-key-listener.html new file mode 100644 index 00000000..6a45b4cf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-on-unhandled-key-listener.html @@ -0,0 +1,76 @@ + + + + + setOnUnhandledKeyListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOnUnhandledKeyListener

+
+

Set a listener that intercepts unhandled key events from dispatchKeyEvent

Parameters

listener

The unhandled key intercept listener.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-orientation.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-orientation.html new file mode 100644 index 00000000..11ca79a7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-orientation.html @@ -0,0 +1,76 @@ + + + + + setOrientation + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setOrientation

+
+
fun setOrientation(orientation: Int)

Updates the orientation of the PivotLayoutManager used by this RecyclerView

Parameters

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-parent-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-parent-alignment.html new file mode 100644 index 00000000..6fc8e0d6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + setParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setParentAlignment

+
+
fun setParentAlignment(alignment: ParentAlignment, smooth: Boolean = false)

Updates the parent alignment configuration for child views of this RecyclerView

Parameters

alignment

the parent alignment configuration

smooth

true if the alignment change should be animated

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-recycle-children-on-detach.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-recycle-children-on-detach.html new file mode 100644 index 00000000..4d7fa816 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-recycle-children-on-detach.html @@ -0,0 +1,76 @@ + + + + + setRecycleChildrenOnDetach + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setRecycleChildrenOnDetach

+
+

Set whether the LayoutManager of this RecyclerView will recycle its children when this RecyclerView is detached from the window.

If you are re-using a RecyclerView.RecycledViewPool, it might be a good idea to set this flag to true so that views will be available to other RecyclerViews immediately.

Parameters

recycle

Whether children should be recycled in detach or not.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-reverse-layout.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-reverse-layout.html new file mode 100644 index 00000000..c8fc6327 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-reverse-layout.html @@ -0,0 +1,76 @@ + + + + + setReverseLayout + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setReverseLayout

+
+
fun setReverseLayout(reverseLayout: Boolean)

Used to reverse item traversal and layout order. This behaves similar to the layout change for RTL views. When set to true, first item is laid out at the end of the UI, second item is laid out before it etc.

For horizontal layouts, it depends on the layout direction.

When set to true:

  • If this DpadRecyclerView is LTR, then it will layout from RTL.

  • If it is RTL, it will layout from LTR.

Parameters

reverseLayout

True to reverse the layout order

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-scroll-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-scroll-enabled.html new file mode 100644 index 00000000..158f7769 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-scroll-enabled.html @@ -0,0 +1,76 @@ + + + + + setScrollEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setScrollEnabled

+
+

Enables or disables scrolling. When this is disabled, DpadRecyclerView can still change focus on DPAD events unless setFocusSearchDisabled is also set.

Parameters

enabled

true if scrolling should be enabled, false otherwise

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position-smooth.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position-smooth.html new file mode 100644 index 00000000..73b7a526 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position-smooth.html @@ -0,0 +1,76 @@ + + + + + setSelectedPositionSmooth + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSelectedPositionSmooth

+
+

Changes the selected item and runs an animation to scroll to the target position.

Parameters

position

Adapter position of the item to select


Performs a task on a ViewHolder at a given position after scrolling to it.

Parameters

position

Adapter position of the item to select

task

Task to executed on the ViewHolder at the given position

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position.html new file mode 100644 index 00000000..7d3ba42e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-position.html @@ -0,0 +1,76 @@ + + + + + setSelectedPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSelectedPosition

+
+
fun setSelectedPosition(position: Int)

Changes the selected item immediately without any scroll animation.

Parameters

position

adapter position of the item to select


fun setSelectedPosition(position: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position after scrolling to it.

Parameters

position

Adapter position of the item to select

task

Task to executed on the ViewHolder at the given position

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position-smooth.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position-smooth.html new file mode 100644 index 00000000..1afca327 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position-smooth.html @@ -0,0 +1,76 @@ + + + + + setSelectedSubPositionSmooth + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSelectedSubPositionSmooth

+
+

Changes the sub selected view and runs and animation to scroll to it.

Parameters

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments


fun setSelectedSubPositionSmooth(position: Int, subPosition: Int)

Changes the sub selected view and runs and animation to scroll to it.

Parameters

position

Adapter position of the item to select

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments


fun setSelectedSubPositionSmooth(position: Int, subPosition: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position and sub position after scrolling to it.

Parameters

position

Adapter position of the item to select

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments

task

Task to executed on the ViewHolder at the given position

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position.html new file mode 100644 index 00000000..619fe0c6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-selected-sub-position.html @@ -0,0 +1,76 @@ + + + + + setSelectedSubPosition + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSelectedSubPosition

+
+
fun setSelectedSubPosition(position: Int, subPosition: Int)

Changes the main selection and sub selected view immediately without any scroll animation.

Parameters

position

Adapter position of the item to select

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments


fun setSelectedSubPosition(position: Int, subPosition: Int, task: ViewHolderTask)

Performs a task on a ViewHolder at a given position and sub position after scrolling to it.

Parameters

position

Adapter position of the item to select

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments

task

Task to executed on the ViewHolder at the given position


fun setSelectedSubPosition(subPosition: Int)

Changes the sub selected view immediately without any scroll animation.

Parameters

subPosition

index of the alignment from DpadViewHolder.getSubPositionAlignments

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-focus-changes-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-focus-changes-enabled.html new file mode 100644 index 00000000..d62daec5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-focus-changes-enabled.html @@ -0,0 +1,76 @@ + + + + + setSmoothFocusChangesEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothFocusChangesEnabled

+
+

Enable or disable smooth scrolling to new focused position. By default, this is set to true. When set to false, RecyclerView will scroll immediately to the focused view without any animation.

Parameters

enabled

true to smooth scroll to the new focused position, false to scroll immediately

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-behavior.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-behavior.html new file mode 100644 index 00000000..e1d005d8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-behavior.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollBehavior + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollBehavior

+
+

Set a custom behavior for smoothScrollBy

Parameters

behavior

Custom behavior or null for the default behavior.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-alignments.html new file mode 100644 index 00000000..4cdcedcc --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-alignments.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollMaxPendingAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollMaxPendingAlignments

+
+

Whenever the user triggers a focus change via a key event, DpadRecyclerView will check if it already has max number of pending alignment changes before dispatching focus to the next view.

Example: User presses KeyEvent.KEYCODE_DPAD_RIGHT 5 times and max is 2.

If focus is at position N, pressing KeyEvent.KEYCODE_DPAD_RIGHT 5 times will only dispatch focus up to position N + max instead of N + 5

Once a view is aligned to its final position or RecyclerView.getScrollState is RecyclerView.SCROLL_STATE_IDLE, we consume that alignment change.

Parameters

max

Maximum number of pending alignment changes

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-moves.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-moves.html new file mode 100644 index 00000000..a23ab4a2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-max-pending-moves.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollMaxPendingMoves + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollMaxPendingMoves

+
+

When the user holds down a key, a lot of key events will be generated by the system. These events are generated a lot faster than this DpadRecyclerView can scroll, so these events need to be cached until the user stops pressing the key.

If this value is too high, then scrolling will take place a lot longer after the key press stops. And if this value is too low, DpadRecyclerView might miss many key events.

The default value is 10.

It might make sense to decrease this if setSmoothScrollSpeedFactor was increased to avoid scrolling for too long after key presses are over.

Parameters

max

Maximum number of pending key events to be remembered.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-speed-factor.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-speed-factor.html new file mode 100644 index 00000000..e17b97b0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-smooth-scroll-speed-factor.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollSpeedFactor + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollSpeedFactor

+
+
fun setSmoothScrollSpeedFactor(smoothScrollSpeedFactor: Float)

Set how slow the smooth scroller should run. Example:

  • When set to 2f, the smooth scroller is twice slower.

  • When set to 0.5f, the smooth scroller is twice faster.

The value is 1f by default.

Parameters

smoothScrollSpeedFactor

Factor of how slow the smooth scroll is.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-count.html new file mode 100644 index 00000000..0138432f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-count.html @@ -0,0 +1,76 @@ + + + + + setSpanCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanCount

+
+
fun setSpanCount(spans: Int)

Updates the number of spans of the PivotLayoutManager used by this RecyclerView.

Parameters

spans

number of columns in vertical orientation, or number of rows in horizontal orientation. Must be greater than 0

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-size-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-size-lookup.html new file mode 100644 index 00000000..30724d95 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-span-size-lookup.html @@ -0,0 +1,76 @@ + + + + + setSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanSizeLookup

+
+

Updates the DpadSpanSizeLookup used by the layout manager of this RecyclerView.

Parameters

spanSizeLookup

the new span size configuration

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-will-not-draw.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-will-not-draw.html new file mode 100644 index 00000000..7723b54c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/set-will-not-draw.html @@ -0,0 +1,76 @@ + + + + + setWillNotDraw + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setWillNotDraw

+
+
override fun setWillNotDraw(willNotDraw: Boolean)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/smooth-scroll-by.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/smooth-scroll-by.html new file mode 100644 index 00000000..cfe1c546 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/smooth-scroll-by.html @@ -0,0 +1,76 @@ + + + + + smoothScrollBy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

smoothScrollBy

+
+
override fun smoothScrollBy(dx: Int, dy: Int)
override fun smoothScrollBy(dx: Int, dy: Int, interpolator: Interpolator?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/start-nested-scroll.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/start-nested-scroll.html new file mode 100644 index 00000000..832f1741 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-recycler-view/start-nested-scroll.html @@ -0,0 +1,76 @@ + + + + + startNestedScroll + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

startNestedScroll

+
+
open override fun startNestedScroll(axes: Int, type: Int): Boolean
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-dpad-scroller.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-dpad-scroller.html new file mode 100644 index 00000000..3f3e9bf7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-dpad-scroller.html @@ -0,0 +1,76 @@ + + + + + DpadScroller + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadScroller

+
+
constructor(calculator: DpadScroller.ScrollDistanceCalculator = DefaultScrollDistanceCalculator())
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/calculate-scroll-distance.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/calculate-scroll-distance.html new file mode 100644 index 00000000..37baa0de --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/calculate-scroll-distance.html @@ -0,0 +1,76 @@ + + + + + calculateScrollDistance + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

calculateScrollDistance

+
+
abstract fun calculateScrollDistance(recyclerView: DpadRecyclerView, event: KeyEvent): Int

Return

the number of pixels we should scroll for this event

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/index.html new file mode 100644 index 00000000..3277e01c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/-scroll-distance-calculator/index.html @@ -0,0 +1,100 @@ + + + + + ScrollDistanceCalculator + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ScrollDistanceCalculator

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun calculateScrollDistance(recyclerView: DpadRecyclerView, event: KeyEvent): Int
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/attach.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/attach.html new file mode 100644 index 00000000..3eb511b4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/attach.html @@ -0,0 +1,76 @@ + + + + + attach + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

attach

+
+
fun attach(recyclerView: DpadRecyclerView)

Attaches this DpadScroller to a new DpadRecyclerView to start observing key events. If you no longer need this behavior, call detach

Parameters

recyclerView

The RecyclerView that will be scrolled discretely

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/detach.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/detach.html new file mode 100644 index 00000000..77b431c4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/detach.html @@ -0,0 +1,76 @@ + + + + + detach + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

detach

+
+
fun detach()

Stops observing key events to scroll the current attached DpadRecyclerView, if any exists

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/index.html new file mode 100644 index 00000000..2f678286 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/index.html @@ -0,0 +1,168 @@ + + + + + DpadScroller + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadScroller

+
class DpadScroller(calculator: DpadScroller.ScrollDistanceCalculator = DefaultScrollDistanceCalculator())

A helper class that allows scrolling a DpadRecyclerView based on specific scroll distances, ignoring the default alignment behavior.

A typical use case for this class is a terms & conditions page, where a large amount of text is displayed, which the user isn't expected to interact with

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(calculator: DpadScroller.ScrollDistanceCalculator = DefaultScrollDistanceCalculator())
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun attach(recyclerView: DpadRecyclerView)

Attaches this DpadScroller to a new DpadRecyclerView to start observing key events. If you no longer need this behavior, call detach

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun detach()

Stops observing key events to scroll the current attached DpadRecyclerView, if any exists

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables or disables smooth scrolling on key events

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/set-smooth-scroll-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/set-smooth-scroll-enabled.html new file mode 100644 index 00000000..75d69b8f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-scroller/set-smooth-scroll-enabled.html @@ -0,0 +1,76 @@ + + + + + setSmoothScrollEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSmoothScrollEnabled

+
+

Enables or disables smooth scrolling on key events

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/-dpad-selection-snap-helper.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/-dpad-selection-snap-helper.html new file mode 100644 index 00000000..05b878e0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/-dpad-selection-snap-helper.html @@ -0,0 +1,76 @@ + + + + + DpadSelectionSnapHelper + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSelectionSnapHelper

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/attach-to-recycler-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/attach-to-recycler-view.html new file mode 100644 index 00000000..7919549f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/attach-to-recycler-view.html @@ -0,0 +1,76 @@ + + + + + attachToRecyclerView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

attachToRecyclerView

+
+
open override fun attachToRecyclerView(recyclerView: RecyclerView?)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/calculate-distance-to-final-snap.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/calculate-distance-to-final-snap.html new file mode 100644 index 00000000..12c3da54 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/calculate-distance-to-final-snap.html @@ -0,0 +1,76 @@ + + + + + calculateDistanceToFinalSnap + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

calculateDistanceToFinalSnap

+
+
open override fun calculateDistanceToFinalSnap(layoutManager: RecyclerView.LayoutManager, targetView: View): IntArray
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/find-snap-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/find-snap-view.html new file mode 100644 index 00000000..5d93c3ef --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/find-snap-view.html @@ -0,0 +1,76 @@ + + + + + findSnapView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

findSnapView

+
+
open override fun findSnapView(layoutManager: RecyclerView.LayoutManager): View?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/index.html new file mode 100644 index 00000000..1f000ffb --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-selection-snap-helper/index.html @@ -0,0 +1,194 @@ + + + + + DpadSelectionSnapHelper + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSelectionSnapHelper

+

A SnapHelper that scrolls Views to their alignment configuration and performs selections automatically. Use this only if you need to support touch event handling, as DpadRecyclerView by default does not handle selection on touch events.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun attachToRecyclerView(recyclerView: RecyclerView?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun calculateDistanceToFinalSnap(layoutManager: RecyclerView.LayoutManager, targetView: View): IntArray
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun findSnapView(layoutManager: RecyclerView.LayoutManager): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun findTargetSnapPosition(p0: RecyclerView.LayoutManager, p1: Int, p2: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun onFling(p0: Int, p1: Int): Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/-dpad-span-size-lookup.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/-dpad-span-size-lookup.html new file mode 100644 index 00000000..e6e2f4d4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/-dpad-span-size-lookup.html @@ -0,0 +1,76 @@ + + + + + DpadSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSpanSizeLookup

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-group-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-group-index.html new file mode 100644 index 00000000..bbe09bc3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-group-index.html @@ -0,0 +1,76 @@ + + + + + getCachedSpanGroupIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getCachedSpanGroupIndex

+
+
fun getCachedSpanGroupIndex(position: Int, spanCount: Int): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-index.html new file mode 100644 index 00000000..3ef9f707 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-cached-span-index.html @@ -0,0 +1,76 @@ + + + + + getCachedSpanIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getCachedSpanIndex

+
+
fun getCachedSpanIndex(position: Int, spanCount: Int): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-group-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-group-index.html new file mode 100644 index 00000000..7f46b44a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-group-index.html @@ -0,0 +1,76 @@ + + + + + getSpanGroupIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanGroupIndex

+
+
open fun getSpanGroupIndex(position: Int, spanCount: Int): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-index.html new file mode 100644 index 00000000..1003167e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-index.html @@ -0,0 +1,76 @@ + + + + + getSpanIndex + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanIndex

+
+
open fun getSpanIndex(position: Int, spanCount: Int): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-size.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-size.html new file mode 100644 index 00000000..3988b7f3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/get-span-size.html @@ -0,0 +1,76 @@ + + + + + getSpanSize + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSpanSize

+
+
abstract fun getSpanSize(position: Int): Int

Returns the number of span occupied by the item at position.

Return

The number of spans occupied by the item at the provided position

Parameters

position

The adapter position of the item

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/index.html new file mode 100644 index 00000000..b43db21d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/index.html @@ -0,0 +1,224 @@ + + + + + DpadSpanSizeLookup + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadSpanSizeLookup

+
abstract class DpadSpanSizeLookup

A helper class to provide the number of spans each item occupies.

Default implementation sets each item to occupy exactly 1 span.

Extracted from: GridLayoutManager.SpanSizeLookup to access package protected methods

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getCachedSpanGroupIndex(position: Int, spanCount: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getCachedSpanIndex(position: Int, spanCount: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getSpanGroupIndex(position: Int, spanCount: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getSpanIndex(position: Int, spanCount: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun getSpanSize(position: Int): Int

Returns the number of span occupied by the item at position.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/invalidate-cache.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/invalidate-cache.html new file mode 100644 index 00000000..b7f16a56 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/invalidate-cache.html @@ -0,0 +1,76 @@ + + + + + invalidateCache + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

invalidateCache

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-group-index-cache-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-group-index-cache-enabled.html new file mode 100644 index 00000000..cdc0caaa --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-group-index-cache-enabled.html @@ -0,0 +1,76 @@ + + + + + setSpanGroupIndexCacheEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanGroupIndexCacheEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-index-cache-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-index-cache-enabled.html new file mode 100644 index 00000000..ab0585b3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-span-size-lookup/set-span-index-cache-enabled.html @@ -0,0 +1,76 @@ + + + + + setSpanIndexCacheEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setSpanIndexCacheEnabled

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/get-sub-position-alignments.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/get-sub-position-alignments.html new file mode 100644 index 00000000..718a1274 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/get-sub-position-alignments.html @@ -0,0 +1,76 @@ + + + + + getSubPositionAlignments + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getSubPositionAlignments

+
+

Return

the alignment configurations to use for this ViewHolder, or empty if it should be aligned using the configuration of the DpadRecyclerView

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/index.html new file mode 100644 index 00000000..b98925b0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/index.html @@ -0,0 +1,145 @@ + + + + + DpadViewHolder + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DpadViewHolder

+
interface DpadViewHolder

A ViewHolder managed by DpadRecyclerView.

Implement this in case you're interested in receiving selection changes or customising alignment

For receiving focus changes, use the standard View.setOnFocusChangeListener instead

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Will be called whenever this ViewHolder is no longer the current one selected.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Will be called whenever this ViewHolder is the current one selected.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Will be called after onViewHolderSelected once the RecyclerView stops scrolling and the ViewHolder is aligned in its final position

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-deselected.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-deselected.html new file mode 100644 index 00000000..38f943d0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-deselected.html @@ -0,0 +1,76 @@ + + + + + onViewHolderDeselected + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewHolderDeselected

+
+

Will be called whenever this ViewHolder is no longer the current one selected.

This is NOT the same as losing focus.

To observe focus changes, you need to use the focus listener set via View.setOnFocusChangeListener

This is called automatically by DpadRecyclerView on selection changes.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected-and-aligned.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected-and-aligned.html new file mode 100644 index 00000000..7ed8a164 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected-and-aligned.html @@ -0,0 +1,76 @@ + + + + + onViewHolderSelectedAndAligned + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewHolderSelectedAndAligned

+
+

Will be called after onViewHolderSelected once the RecyclerView stops scrolling and the ViewHolder is aligned in its final position

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected.html new file mode 100644 index 00000000..ed5a8dd3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-dpad-view-holder/on-view-holder-selected.html @@ -0,0 +1,76 @@ + + + + + onViewHolderSelected + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewHolderSelected

+
+

Will be called whenever this ViewHolder is the current one selected.

This is NOT the same as gaining focus.

To observe focus changes, you need to use the focus listener set via View.setOnFocusChangeListener

This is called automatically by DpadRecyclerView on selection changes.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-end-extra-layout-space.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-end-extra-layout-space.html new file mode 100644 index 00000000..c7cc72b8 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-end-extra-layout-space.html @@ -0,0 +1,76 @@ + + + + + calculateEndExtraLayoutSpace + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

calculateEndExtraLayoutSpace

+
+

Calculates the extra space that should be laid out (in pixels)

By default, DpadRecyclerView will not layout any extra space to minimise the number of views in memory.

Return

the extra space (in pixels) to be added to the end of the layout

Parameters

state

the current DpadRecyclerView state

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-start-extra-layout-space.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-start-extra-layout-space.html new file mode 100644 index 00000000..3a69c7a2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/calculate-start-extra-layout-space.html @@ -0,0 +1,76 @@ + + + + + calculateStartExtraLayoutSpace + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

calculateStartExtraLayoutSpace

+
+

Return

the extra space (in pixels) to be added to the start of the layout

Parameters

state

the current DpadRecyclerView state

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/index.html new file mode 100644 index 00000000..241d256e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-extra-layout-space-strategy/index.html @@ -0,0 +1,115 @@ + + + + + ExtraLayoutSpaceStrategy + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ExtraLayoutSpaceStrategy

+

Overrides the default mechanism for laying out extra views at the borders of the RecyclerView. Check LinearLayoutManager.calculateExtraLayoutSpace for more details.

By default, DpadRecyclerView will not layout any extra space to minimise the number of views in memory.

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Calculates the extra space that should be laid out (in pixels)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-i-r-c-u-l-a-r/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-i-r-c-u-l-a-r/index.html new file mode 100644 index 00000000..283d7858 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-i-r-c-u-l-a-r/index.html @@ -0,0 +1,115 @@ + + + + + CIRCULAR + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

CIRCULAR

+

Similar to STANDARD, but applies a different logic for the edges:

  • If the current focus is in the last column, when pressing right, the focus goes to the leftmost column

  • If the current focus is in the first column, when pressing left, the focus goes to the rightmost column

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-o-n-t-i-n-u-o-u-s/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-o-n-t-i-n-u-o-u-s/index.html new file mode 100644 index 00000000..dc4fa8d2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-c-o-n-t-i-n-u-o-u-s/index.html @@ -0,0 +1,115 @@ + + + + + CONTINUOUS + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

CONTINUOUS

+

Similar to STANDARD, but applies a different logic at the edges:

  • If focusing forward (e.g Dpad right on a vertical grid) on the last column, the next focused item will be the item in the first column of the next row.

  • If focusing backwards (e.g Dpad left on a vertical grid) on the first column, the next focused item will be the item in the last column of the previous row.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-s-t-a-n-d-a-r-d/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-s-t-a-n-d-a-r-d/index.html new file mode 100644 index 00000000..6ddf9952 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/-s-t-a-n-d-a-r-d/index.html @@ -0,0 +1,115 @@ + + + + + STANDARD + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

STANDARD

+

Focus goes to the next left, top, right or bottom view available

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/entries.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/entries.html new file mode 100644 index 00000000..b949eb3b --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/entries.html @@ -0,0 +1,76 @@ + + + + + entries + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

entries

+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/index.html new file mode 100644 index 00000000..777c2841 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/index.html @@ -0,0 +1,213 @@ + + + + + FocusableDirection + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

FocusableDirection

+ +
+
+
+
+
+

Entries

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Focus goes to the next left, top, right or bottom view available

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Similar to STANDARD, but applies a different logic for the edges:

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Similar to STANDARD, but applies a different logic at the edges:

+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns an array containing the constants of this enum type, in the order they're declared.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/value-of.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/value-of.html new file mode 100644 index 00000000..1620687c --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/value-of.html @@ -0,0 +1,76 @@ + + + + + valueOf + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

valueOf

+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/values.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/values.html new file mode 100644 index 00000000..877d88fe --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-focusable-direction/values.html @@ -0,0 +1,76 @@ + + + + + values + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

values

+
+

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/index.html new file mode 100644 index 00000000..41ceb3c9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnChildLaidOutListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnChildLaidOutListener

+

Listener for receiving layout events of children of this RecyclerView

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Called after a ViewHolder's view has been added to the view hierarchy and has been laid out

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/on-child-laid-out.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/on-child-laid-out.html new file mode 100644 index 00000000..bd8ce957 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-child-laid-out-listener/on-child-laid-out.html @@ -0,0 +1,76 @@ + + + + + onChildLaidOut + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onChildLaidOut

+
+

Called after a ViewHolder's view has been added to the view hierarchy and has been laid out

Parameters

parent

the RecyclerView that contains this child

child

the RecyclerView.ViewHolder that was laid out

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/index.html new file mode 100644 index 00000000..e8f50f5f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/index.html @@ -0,0 +1,100 @@ + + + + + OnViewFocusedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnViewFocusedListener

+

Callback for receiving a notification when a View of a RecyclerView.ViewHolder has been focused.

Be aware that a RecyclerView.ViewHolder selection can change without focus and, in that case, this callback is not invoked. Instead, use OnViewHolderSelectedListener for observing selections

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun onViewFocused(parent: RecyclerView.ViewHolder, child: View)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/on-view-focused.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/on-view-focused.html new file mode 100644 index 00000000..ae775aac --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-focused-listener/on-view-focused.html @@ -0,0 +1,76 @@ + + + + + onViewFocused + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewFocused

+
+
abstract fun onViewFocused(parent: RecyclerView.ViewHolder, child: View)

Parameters

parent

The RecyclerView.ViewHolder within the RecyclerView that is focused

child

The actual child View that received focus. Can be a child of a nested RecyclerView.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/index.html new file mode 100644 index 00000000..7ec5c8ef --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/index.html @@ -0,0 +1,115 @@ + + + + + OnViewHolderSelectedListener + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

OnViewHolderSelectedListener

+

Callback for receiving a notification when a ViewHolder has been selected. There are two methods:

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onViewHolderSelected(parent: RecyclerView, child: RecyclerView.ViewHolder?, position: Int, subPosition: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onViewHolderSelectedAndAligned(parent: RecyclerView, child: RecyclerView.ViewHolder?, position: Int, subPosition: Int)

Called when child has scrolled to its final position

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected-and-aligned.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected-and-aligned.html new file mode 100644 index 00000000..157ff457 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected-and-aligned.html @@ -0,0 +1,76 @@ + + + + + onViewHolderSelectedAndAligned + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewHolderSelectedAndAligned

+
+
open fun onViewHolderSelectedAndAligned(parent: RecyclerView, child: RecyclerView.ViewHolder?, position: Int, subPosition: Int)

Called when child has scrolled to its final position

Parameters

parent

The RecyclerView where the selection happened.

child

The ViewHolder within the RecyclerView that is selected, or null if no view is selected.

position

The position of the view in the adapter, or NO_POSITION if no view is selected.

subPosition

The index of the alignment from DpadViewHolder.getSubPositionAlignments, or 0 if there is no custom alignment

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected.html new file mode 100644 index 00000000..4d3ff223 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-on-view-holder-selected-listener/on-view-holder-selected.html @@ -0,0 +1,76 @@ + + + + + onViewHolderSelected + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

onViewHolderSelected

+
+
open fun onViewHolderSelected(parent: RecyclerView, child: RecyclerView.ViewHolder?, position: Int, subPosition: Int)

Parameters

parent

The RecyclerView where the selection happened.

child

The ViewHolder within the RecyclerView that is selected, or null if no view is selected.

position

The position of the view in the adapter, or NO_POSITION if no view is selected.

subPosition

The index of the alignment from DpadViewHolder.getSubPositionAlignments, or 0 if there is no custom alignment

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/create-from-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/create-from-parcel.html new file mode 100644 index 00000000..9bfe1ede --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/create-from-parcel.html @@ -0,0 +1,76 @@ + + + + + createFromParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

createFromParcel

+
+
open override fun createFromParcel(parcel: Parcel): ParentAlignment
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/index.html new file mode 100644 index 00000000..2e6b0c50 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/index.html @@ -0,0 +1,115 @@ + + + + + CREATOR + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

CREATOR

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun createFromParcel(parcel: Parcel): ParentAlignment
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun newArray(size: Int): Array<ParentAlignment?>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/new-array.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/new-array.html new file mode 100644 index 00000000..8e2ac420 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-c-r-e-a-t-o-r/new-array.html @@ -0,0 +1,76 @@ + + + + + newArray + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

newArray

+
+
open override fun newArray(size: Int): Array<ParentAlignment?>
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-a-x/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-a-x/index.html new file mode 100644 index 00000000..147918ff --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-a-x/index.html @@ -0,0 +1,115 @@ + + + + + MAX + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

MAX

+

All items will be always aligned to the keyline position except the item at the end. This will be the bottom for Vertical orientation, or end for Horizontal orientation

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n/index.html new file mode 100644 index 00000000..a630e9f0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n/index.html @@ -0,0 +1,115 @@ + + + + + MIN + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

MIN

+

All items will be always aligned to the keyline position except the item at the start. This will be the top for Vertical orientation, or start for the horizontal orientation

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n_-m-a-x/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n_-m-a-x/index.html new file mode 100644 index 00000000..85a4e77e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-m-i-n_-m-a-x/index.html @@ -0,0 +1,115 @@ + + + + + MIN_MAX + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

MIN_MAX

+

All items will be always aligned to the keyline position except the items at the start and end edges

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-n-o-n-e/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-n-o-n-e/index.html new file mode 100644 index 00000000..1a95e20d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/-n-o-n-e/index.html @@ -0,0 +1,115 @@ + + + + + NONE + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

NONE

+

Items will always be aligned to the keyline position by default

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/entries.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/entries.html new file mode 100644 index 00000000..7fb040ec --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/entries.html @@ -0,0 +1,76 @@ + + + + + entries + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

entries

+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/index.html new file mode 100644 index 00000000..506d2dd4 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/index.html @@ -0,0 +1,228 @@ + + + + + Edge + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Edge

+

Overrides the keyline alignment and instead aligns to a certain edge.

MIN and MAX are considered from the layout direction, so in case reverse layout is enabled, MIN and MAX will point instead to bottom/top for vertical layouts and left/right for horizontal layouts.

+
+
+
+
+
+

Entries

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Items will always be aligned to the keyline position by default

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

All items will be always aligned to the keyline position except the item at the start. This will be the top for Vertical orientation, or start for the horizontal orientation

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

All items will be always aligned to the keyline position except the item at the end. This will be the bottom for Vertical orientation, or end for Horizontal orientation

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

All items will be always aligned to the keyline position except the items at the start and end edges

+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns an array containing the constants of this enum type, in the order they're declared.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/value-of.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/value-of.html new file mode 100644 index 00000000..8a647fa2 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/value-of.html @@ -0,0 +1,76 @@ + + + + + valueOf + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

valueOf

+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/values.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/values.html new file mode 100644 index 00000000..c08448b5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-edge/values.html @@ -0,0 +1,76 @@ + + + + + values + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

values

+
+

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-parent-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-parent-alignment.html new file mode 100644 index 00000000..d13b2ba7 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/-parent-alignment.html @@ -0,0 +1,76 @@ + + + + + ParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ParentAlignment

+
+
constructor(parcel: Parcel)
constructor(edge: ParentAlignment.Edge = Edge.MIN_MAX, offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, preferKeylineOverEdge: Boolean = edge == MAX)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/describe-contents.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/describe-contents.html new file mode 100644 index 00000000..375eb2ce --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/describe-contents.html @@ -0,0 +1,76 @@ + + + + + describeContents + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

describeContents

+
+
open override fun describeContents(): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/edge.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/edge.html new file mode 100644 index 00000000..b85f3366 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/edge.html @@ -0,0 +1,76 @@ + + + + + edge + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

edge

+
+

The specific alignment to a given edge that overrides the keyline alignment. See Edge Default: Edge.MIN_MAX

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/fraction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/fraction.html new file mode 100644 index 00000000..a7105385 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/fraction.html @@ -0,0 +1,76 @@ + + + + + fraction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

fraction

+
+

The keyline position for the alignment. Default: 0.5f (center)

Set isFractionEnabled to false in case you want to disable this

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/index.html new file mode 100644 index 00000000..3a765f08 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/index.html @@ -0,0 +1,247 @@ + + + + + ParentAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ParentAlignment

+
data class ParentAlignment(val edge: ParentAlignment.Edge = Edge.MIN_MAX, val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val preferKeylineOverEdge: Boolean = edge == MAX) : Parcelable

Alignment configuration for aligning views in relation to the RecyclerView bounds

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(parcel: Parcel)
constructor(edge: ParentAlignment.Edge = Edge.MIN_MAX, offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, preferKeylineOverEdge: Boolean = edge == MAX)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Overrides the keyline alignment and instead aligns to a certain edge.

+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

The specific alignment to a given edge that overrides the keyline alignment. See Edge Default: Edge.MIN_MAX

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The keyline position for the alignment. Default: 0.5f (center)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

true if fraction should be used to position the item.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val offset: Int

The distance added to the fraction of the RecyclerView in pixels.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

When Edge.MAX or Edge.MIN are used, this flag decides if the Views should be aligned to the keyline when there are few items, overriding the edge preference.

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun describeContents(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/is-fraction-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/is-fraction-enabled.html new file mode 100644 index 00000000..72ef9f2f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/is-fraction-enabled.html @@ -0,0 +1,76 @@ + + + + + isFractionEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFractionEnabled

+
+

true if fraction should be used to position the item.

If false, only offset will be used for the keyline position

Default is true.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/offset.html new file mode 100644 index 00000000..40589343 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/offset.html @@ -0,0 +1,76 @@ + + + + + offset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offset

+
+
val offset: Int

The distance added to the fraction of the RecyclerView in pixels.

E.g fraction = 0.5f, offset = 100, RecyclerView's height = 500

Keyline position = 500 * 0.5f + 100 = 350

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/prefer-keyline-over-edge.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/prefer-keyline-over-edge.html new file mode 100644 index 00000000..a6e2f5fd --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/prefer-keyline-over-edge.html @@ -0,0 +1,76 @@ + + + + + preferKeylineOverEdge + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

preferKeylineOverEdge

+
+

When Edge.MAX or Edge.MIN are used, this flag decides if the Views should be aligned to the keyline when there are few items, overriding the edge preference.

Default is: True for Edge.MAX, which means we prefer aligning to the keyline False for Edge.MIN, which means we prefer aligning to the min edge.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/write-to-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/write-to-parcel.html new file mode 100644 index 00000000..08f2adc9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-parent-alignment/write-to-parcel.html @@ -0,0 +1,76 @@ + + + + + writeToParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

writeToParcel

+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/create-from-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/create-from-parcel.html new file mode 100644 index 00000000..b3bbf8f0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/create-from-parcel.html @@ -0,0 +1,76 @@ + + + + + createFromParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

createFromParcel

+
+
open override fun createFromParcel(parcel: Parcel): SubPositionAlignment
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/index.html new file mode 100644 index 00000000..a4b91800 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/index.html @@ -0,0 +1,115 @@ + + + + + CREATOR + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + +
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun createFromParcel(parcel: Parcel): SubPositionAlignment
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun newArray(size: Int): Array<SubPositionAlignment?>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/new-array.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/new-array.html new file mode 100644 index 00000000..3e3f2913 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-c-r-e-a-t-o-r/new-array.html @@ -0,0 +1,76 @@ + + + + + newArray + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

newArray

+
+
open override fun newArray(size: Int): Array<SubPositionAlignment?>
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-sub-position-alignment.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-sub-position-alignment.html new file mode 100644 index 00000000..17bd5af1 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/-sub-position-alignment.html @@ -0,0 +1,76 @@ + + + + + SubPositionAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

SubPositionAlignment

+
+
constructor(parcel: Parcel)
constructor(offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, includePadding: Boolean = false, alignToBaseline: Boolean = false, alignmentViewId: Int = View.NO_ID, focusViewId: Int = View.NO_ID)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/align-to-baseline.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/align-to-baseline.html new file mode 100644 index 00000000..2f579c76 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/align-to-baseline.html @@ -0,0 +1,76 @@ + + + + + alignToBaseline + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

alignToBaseline

+
+
open override val alignToBaseline: Boolean = false

When true, aligns to View.getBaseline for the view used for the alignment

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/alignment-view-id.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/alignment-view-id.html new file mode 100644 index 00000000..f014ad77 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/alignment-view-id.html @@ -0,0 +1,76 @@ + + + + + alignmentViewId + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

alignmentViewId

+
+

The id of the child view that should be used for the alignment. If it is View.NO_ID, then the root view will be used instead. This is not necessarily the same view that will receive focus.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/describe-contents.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/describe-contents.html new file mode 100644 index 00000000..f1559c18 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/describe-contents.html @@ -0,0 +1,76 @@ + + + + + describeContents + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

describeContents

+
+
open override fun describeContents(): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/fraction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/fraction.html new file mode 100644 index 00000000..7910c823 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/fraction.html @@ -0,0 +1,76 @@ + + + + + fraction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

fraction

+
+
open override val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

Set isFractionEnabled to false in case you want to disable this

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/get-focus-view-id.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/get-focus-view-id.html new file mode 100644 index 00000000..a643334d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/get-focus-view-id.html @@ -0,0 +1,76 @@ + + + + + getFocusViewId + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getFocusViewId

+
+ +
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/include-padding.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/include-padding.html new file mode 100644 index 00000000..3812f562 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/include-padding.html @@ -0,0 +1,76 @@ + + + + + includePadding + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

includePadding

+
+
open override val includePadding: Boolean = false

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/index.html new file mode 100644 index 00000000..e26ded6f --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/index.html @@ -0,0 +1,262 @@ + + + + + SubPositionAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

SubPositionAlignment

+
data class SubPositionAlignment(val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val includePadding: Boolean = false, val alignToBaseline: Boolean = false, val alignmentViewId: Int = View.NO_ID, focusViewId: Int = View.NO_ID) : ViewAlignment, Parcelable

Alignment configuration specific to a certain sub position.

This will override the default alignment set from ChildAlignment.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(parcel: Parcel)
constructor(offset: Int = ViewAlignment.DEFAULT_OFFSET, fraction: Float = ViewAlignment.DEFAULT_FRACTION, isFractionEnabled: Boolean = true, includePadding: Boolean = false, alignToBaseline: Boolean = false, alignmentViewId: Int = View.NO_ID, focusViewId: Int = View.NO_ID)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

The id of the child view that should be used for the alignment. If it is View.NO_ID, then the root view will be used instead. This is not necessarily the same view that will receive focus.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val alignToBaseline: Boolean = false

When true, aligns to View.getBaseline for the view used for the alignment

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val includePadding: Boolean = false

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val isFractionEnabled: Boolean = true

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override val offset: Int

The distance to the fraction of the view in pixels.

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun describeContents(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/is-fraction-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/is-fraction-enabled.html new file mode 100644 index 00000000..ab578d3d --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/is-fraction-enabled.html @@ -0,0 +1,76 @@ + + + + + isFractionEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFractionEnabled

+
+
open override val isFractionEnabled: Boolean = true

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/offset.html new file mode 100644 index 00000000..2b31f417 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/offset.html @@ -0,0 +1,76 @@ + + + + + offset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offset

+
+
open override val offset: Int

The distance to the fraction of the view in pixels.

E.g fraction = 0.5f, offset = 100, View's height = 500

Keyline position = 500 * 0.5f + 100 = 350

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/write-to-parcel.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/write-to-parcel.html new file mode 100644 index 00000000..61fbe9f6 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-sub-position-alignment/write-to-parcel.html @@ -0,0 +1,76 @@ + + + + + writeToParcel + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

writeToParcel

+
+
open override fun writeToParcel(parcel: Parcel, flags: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/-unbound-view-pool.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/-unbound-view-pool.html new file mode 100644 index 00000000..a986c54e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/-unbound-view-pool.html @@ -0,0 +1,76 @@ + + + + + UnboundViewPool + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

UnboundViewPool

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/clear.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/clear.html new file mode 100644 index 00000000..f8ad99b0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/clear.html @@ -0,0 +1,76 @@ + + + + + clear + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

clear

+
+
open override fun clear()
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view-count.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view-count.html new file mode 100644 index 00000000..9213644a --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view-count.html @@ -0,0 +1,76 @@ + + + + + getRecycledViewCount + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getRecycledViewCount

+
+
open override fun getRecycledViewCount(viewType: Int): Int
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view.html new file mode 100644 index 00000000..425f2be0 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/get-recycled-view.html @@ -0,0 +1,76 @@ + + + + + getRecycledView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

getRecycledView

+
+
open override fun getRecycledView(viewType: Int): RecyclerView.ViewHolder?
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/index.html new file mode 100644 index 00000000..01042d89 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/index.html @@ -0,0 +1,179 @@ + + + + + UnboundViewPool + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

UnboundViewPool

+

A RecyclerView.RecycledViewPool that does not limit the number of ViewHolders recycled.

This is meant to be shared across different RecyclerView to minimise ViewHolder inflation time and memory consumption, since RecyclerView will only create and bind the absolute minimum number of ViewHolders it really needs.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun clear()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getRecycledView(viewType: Int): RecyclerView.ViewHolder?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun getRecycledViewCount(viewType: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun putRecycledView(viewHolder: RecyclerView.ViewHolder)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun setMaxRecycledViews(viewType: Int, max: Int)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/put-recycled-view.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/put-recycled-view.html new file mode 100644 index 00000000..a3fd2067 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/put-recycled-view.html @@ -0,0 +1,76 @@ + + + + + putRecycledView + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

putRecycledView

+
+
open override fun putRecycledView(viewHolder: RecyclerView.ViewHolder)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/set-max-recycled-views.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/set-max-recycled-views.html new file mode 100644 index 00000000..aa1d8d45 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-unbound-view-pool/set-max-recycled-views.html @@ -0,0 +1,76 @@ + + + + + setMaxRecycledViews + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

setMaxRecycledViews

+
+
open override fun setMaxRecycledViews(viewType: Int, max: Int)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-f-r-a-c-t-i-o-n.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-f-r-a-c-t-i-o-n.html new file mode 100644 index 00000000..c8c94804 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-f-r-a-c-t-i-o-n.html @@ -0,0 +1,76 @@ + + + + + DEFAULT_FRACTION + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DEFAULT_FRACTION

+
+
const val DEFAULT_FRACTION: Float = 0.5f

See fraction

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-o-f-f-s-e-t.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-o-f-f-s-e-t.html new file mode 100644 index 00000000..2e6cf427 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/-d-e-f-a-u-l-t_-o-f-f-s-e-t.html @@ -0,0 +1,76 @@ + + + + + DEFAULT_OFFSET + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

DEFAULT_OFFSET

+
+
const val DEFAULT_OFFSET: Int = 0

See offset

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/index.html new file mode 100644 index 00000000..2a0b8e02 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/-companion/index.html @@ -0,0 +1,115 @@ + + + + + Companion + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+
object Companion
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
const val DEFAULT_FRACTION: Float = 0.5f
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
const val DEFAULT_OFFSET: Int = 0

See offset

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/align-to-baseline.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/align-to-baseline.html new file mode 100644 index 00000000..6fefe38e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/align-to-baseline.html @@ -0,0 +1,76 @@ + + + + + alignToBaseline + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

alignToBaseline

+
+
abstract val alignToBaseline: Boolean

When true, aligns to View.getBaseline for the view used for the alignment

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/fraction.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/fraction.html new file mode 100644 index 00000000..12bdb443 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/fraction.html @@ -0,0 +1,76 @@ + + + + + fraction + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

fraction

+
+
abstract val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

Set isFractionEnabled to false in case you want to disable this

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/include-padding.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/include-padding.html new file mode 100644 index 00000000..4cd70312 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/include-padding.html @@ -0,0 +1,76 @@ + + + + + includePadding + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

includePadding

+
+
abstract val includePadding: Boolean

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/index.html new file mode 100644 index 00000000..cb512f0e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/index.html @@ -0,0 +1,179 @@ + + + + + ViewAlignment + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewAlignment

+ +
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract val alignToBaseline: Boolean

When true, aligns to View.getBaseline for the view used for the alignment

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract val fraction: Float

The keyline position for the alignment. Default: 0.5f (center)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract val includePadding: Boolean

True if padding should be included for the alignment. Includes start/top padding if fraction is 0f. Includes end/bottom padding if fraction is 1f. If fraction is not 0f or 1f, padding isn't included

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract val offset: Int

The distance to the fraction of the view in pixels.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/is-fraction-enabled.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/is-fraction-enabled.html new file mode 100644 index 00000000..d8c495e3 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/is-fraction-enabled.html @@ -0,0 +1,76 @@ + + + + + isFractionEnabled + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isFractionEnabled

+
+

When enabled, fraction will be used for the alignment. Otherwise, only offset will be used.

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/offset.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/offset.html new file mode 100644 index 00000000..e134eab9 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-alignment/offset.html @@ -0,0 +1,76 @@ + + + + + offset + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

offset

+
+
abstract val offset: Int

The distance to the fraction of the view in pixels.

E.g fraction = 0.5f, offset = 100, View's height = 500

Keyline position = 500 * 0.5f + 100 = 350

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/-view-holder-task.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/-view-holder-task.html new file mode 100644 index 00000000..74c456c5 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/-view-holder-task.html @@ -0,0 +1,76 @@ + + + + + ViewHolderTask + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewHolderTask

+
+
constructor(executeWhenAligned: Boolean = false)

Parameters

executeWhenAligned

if this task should only be executed when a ViewHolder is aligned to its final position, or false if it should be executed immediately after the selection

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute-when-aligned.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute-when-aligned.html new file mode 100644 index 00000000..60870bcf --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute-when-aligned.html @@ -0,0 +1,76 @@ + + + + + executeWhenAligned + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

executeWhenAligned

+
+

Parameters

executeWhenAligned

if this task should only be executed when a ViewHolder is aligned to its final position, or false if it should be executed immediately after the selection

+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute.html new file mode 100644 index 00000000..1574eb9e --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/execute.html @@ -0,0 +1,76 @@ + + + + + execute + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

execute

+
+
abstract fun execute(viewHolder: RecyclerView.ViewHolder)
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/index.html new file mode 100644 index 00000000..ae96bd36 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/-view-holder-task/index.html @@ -0,0 +1,138 @@ + + + + + ViewHolderTask + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewHolderTask

+
abstract class ViewHolderTask(val executeWhenAligned: Boolean = false)

Task that's scheduled and executed when a ViewHolder is selected

Parameters

executeWhenAligned

if this task should only be executed when a ViewHolder is aligned to its final position, or false if it should be executed immediately after the selection

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(executeWhenAligned: Boolean = false)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun execute(viewHolder: RecyclerView.ViewHolder)
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/index.html b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/index.html new file mode 100644 index 00000000..075a7172 --- /dev/null +++ b/api/dpadrecyclerview/com.rubensousa.dpadrecyclerview/index.html @@ -0,0 +1,358 @@ + + + + + com.rubensousa.dpadrecyclerview + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
data class ChildAlignment(val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val includePadding: Boolean = false, val alignToBaseline: Boolean = false) : ViewAlignment, Parcelable

Alignment configuration for aligning views in relation to its dimensions

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
class DpadDragHelper<T>(adapter: DpadDragHelper.DragAdapter<T>, callback: DpadDragHelper.DragCallback, cancelKeyCodes: Set<Int> = setOf( + KeyEvent.KEYCODE_DPAD_CENTER, + KeyEvent.KEYCODE_ENTER, + KeyEvent.KEYCODE_BACK + ))

A helper class for re-ordering the contents of a DpadRecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Defines how items are looped around in DpadRecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open class DpadRecyclerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.dpadRecyclerViewStyle) : RecyclerView

A RecyclerView that scrolls to items on DPAD key events.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
class DpadScroller(calculator: DpadScroller.ScrollDistanceCalculator = DefaultScrollDistanceCalculator())

A helper class that allows scrolling a DpadRecyclerView based on specific scroll distances, ignoring the default alignment behavior.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

A SnapHelper that scrolls Views to their alignment configuration and performs selections automatically. Use this only if you need to support touch event handling, as DpadRecyclerView by default does not handle selection on touch events.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract class DpadSpanSizeLookup

A helper class to provide the number of spans each item occupies.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
interface DpadViewHolder

A ViewHolder managed by DpadRecyclerView.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Overrides the default mechanism for laying out extra views at the borders of the RecyclerView. Check LinearLayoutManager.calculateExtraLayoutSpace for more details.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Listener for receiving layout events of children of this RecyclerView

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Callback for receiving a notification when a View of a RecyclerView.ViewHolder has been focused.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Callback for receiving a notification when a ViewHolder has been selected. There are two methods:

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
data class ParentAlignment(val edge: ParentAlignment.Edge = Edge.MIN_MAX, val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val preferKeylineOverEdge: Boolean = edge == MAX) : Parcelable

Alignment configuration for aligning views in relation to the RecyclerView bounds

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
data class SubPositionAlignment(val offset: Int = ViewAlignment.DEFAULT_OFFSET, val fraction: Float = ViewAlignment.DEFAULT_FRACTION, val isFractionEnabled: Boolean = true, val includePadding: Boolean = false, val alignToBaseline: Boolean = false, val alignmentViewId: Int = View.NO_ID, focusViewId: Int = View.NO_ID) : ViewAlignment, Parcelable

Alignment configuration specific to a certain sub position.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

A RecyclerView.RecycledViewPool that does not limit the number of ViewHolders recycled.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
interface ViewAlignment
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract class ViewHolderTask(val executeWhenAligned: Boolean = false)

Task that's scheduled and executed when a ViewHolder is selected

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/index.html b/api/dpadrecyclerview/index.html new file mode 100644 index 00000000..14383c26 --- /dev/null +++ b/api/dpadrecyclerview/index.html @@ -0,0 +1,167 @@ + + + + + dpadrecyclerview + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dpadrecyclerview

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/api/dpadrecyclerview/navigation.html b/api/dpadrecyclerview/navigation.html new file mode 100644 index 00000000..1cd820d5 --- /dev/null +++ b/api/dpadrecyclerview/navigation.html @@ -0,0 +1,422 @@ +
+
+ +
+ +
+ +
+
+ CREATOR +
+
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+ NONE +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+ + + + +
+ +
+ +
+ +
+
+ STANDARD +
+
+
+
+ CIRCULAR +
+
+
+ +
+
+ + + +
+ +
+
+ CREATOR +
+
+
+
+ Edge +
+
+
+ NONE +
+
+
+
+ MIN +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+
+
+ +
+
+ CREATOR +
+
+
+
+ +
+
+ +
+
+ Companion +
+
+
+
+ +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
diff --git a/api/images/anchor-copy-button.svg b/api/images/anchor-copy-button.svg new file mode 100644 index 00000000..19c1fa3f --- /dev/null +++ b/api/images/anchor-copy-button.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/api/images/arrow_down.svg b/api/images/arrow_down.svg new file mode 100644 index 00000000..639aaf12 --- /dev/null +++ b/api/images/arrow_down.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/api/images/burger.svg b/api/images/burger.svg new file mode 100644 index 00000000..fcca732b --- /dev/null +++ b/api/images/burger.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/api/images/copy-icon.svg b/api/images/copy-icon.svg new file mode 100644 index 00000000..2cb02ec6 --- /dev/null +++ b/api/images/copy-icon.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/api/images/copy-successful-icon.svg b/api/images/copy-successful-icon.svg new file mode 100644 index 00000000..c4b95383 --- /dev/null +++ b/api/images/copy-successful-icon.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/api/images/footer-go-to-link.svg b/api/images/footer-go-to-link.svg new file mode 100644 index 00000000..a87add7a --- /dev/null +++ b/api/images/footer-go-to-link.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/api/images/go-to-top-icon.svg b/api/images/go-to-top-icon.svg new file mode 100644 index 00000000..abc3d1ce --- /dev/null +++ b/api/images/go-to-top-icon.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/api/images/homepage.svg b/api/images/homepage.svg new file mode 100644 index 00000000..e3c83b1c --- /dev/null +++ b/api/images/homepage.svg @@ -0,0 +1,3 @@ + + + diff --git a/api/images/logo-icon.svg b/api/images/logo-icon.svg new file mode 100644 index 00000000..e42f9570 --- /dev/null +++ b/api/images/logo-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/api/images/nav-icons/abstract-class-kotlin.svg b/api/images/nav-icons/abstract-class-kotlin.svg new file mode 100644 index 00000000..19d6148c --- /dev/null +++ b/api/images/nav-icons/abstract-class-kotlin.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/images/nav-icons/abstract-class.svg b/api/images/nav-icons/abstract-class.svg new file mode 100644 index 00000000..60182030 --- /dev/null +++ b/api/images/nav-icons/abstract-class.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/api/images/nav-icons/annotation-kotlin.svg b/api/images/nav-icons/annotation-kotlin.svg new file mode 100644 index 00000000..b90f508c --- /dev/null +++ b/api/images/nav-icons/annotation-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/nav-icons/annotation.svg b/api/images/nav-icons/annotation.svg new file mode 100644 index 00000000..b80c54b4 --- /dev/null +++ b/api/images/nav-icons/annotation.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/class-kotlin.svg b/api/images/nav-icons/class-kotlin.svg new file mode 100644 index 00000000..797a2423 --- /dev/null +++ b/api/images/nav-icons/class-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/nav-icons/class.svg b/api/images/nav-icons/class.svg new file mode 100644 index 00000000..3f1ad167 --- /dev/null +++ b/api/images/nav-icons/class.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/enum-kotlin.svg b/api/images/nav-icons/enum-kotlin.svg new file mode 100644 index 00000000..775a7cc9 --- /dev/null +++ b/api/images/nav-icons/enum-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/nav-icons/enum.svg b/api/images/nav-icons/enum.svg new file mode 100644 index 00000000..fa7f2476 --- /dev/null +++ b/api/images/nav-icons/enum.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/exception-class.svg b/api/images/nav-icons/exception-class.svg new file mode 100644 index 00000000..c0b2bdeb --- /dev/null +++ b/api/images/nav-icons/exception-class.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/field-value.svg b/api/images/nav-icons/field-value.svg new file mode 100644 index 00000000..2771ee56 --- /dev/null +++ b/api/images/nav-icons/field-value.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/api/images/nav-icons/field-variable.svg b/api/images/nav-icons/field-variable.svg new file mode 100644 index 00000000..e2d2bbd0 --- /dev/null +++ b/api/images/nav-icons/field-variable.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/api/images/nav-icons/function.svg b/api/images/nav-icons/function.svg new file mode 100644 index 00000000..f0da64a0 --- /dev/null +++ b/api/images/nav-icons/function.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/interface-kotlin.svg b/api/images/nav-icons/interface-kotlin.svg new file mode 100644 index 00000000..5e163260 --- /dev/null +++ b/api/images/nav-icons/interface-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/nav-icons/interface.svg b/api/images/nav-icons/interface.svg new file mode 100644 index 00000000..32063ba2 --- /dev/null +++ b/api/images/nav-icons/interface.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/images/nav-icons/object.svg b/api/images/nav-icons/object.svg new file mode 100644 index 00000000..31f0ee3e --- /dev/null +++ b/api/images/nav-icons/object.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/nav-icons/typealias-kotlin.svg b/api/images/nav-icons/typealias-kotlin.svg new file mode 100644 index 00000000..f4bb238b --- /dev/null +++ b/api/images/nav-icons/typealias-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/api/images/theme-toggle.svg b/api/images/theme-toggle.svg new file mode 100644 index 00000000..df86202b --- /dev/null +++ b/api/images/theme-toggle.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..bb00db90 --- /dev/null +++ b/api/index.html @@ -0,0 +1,109 @@ + + + + + All modules + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

All modules:

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/api/navigation.html b/api/navigation.html new file mode 100644 index 00000000..9856d108 --- /dev/null +++ b/api/navigation.html @@ -0,0 +1,422 @@ +
+
+ +
+ +
+ +
+
+ CREATOR +
+
+
+
+ +
+ +
+
+ +
+
+
+ +
+
+ NONE +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+ + + + +
+ +
+ +
+ +
+
+ STANDARD +
+
+
+
+ CIRCULAR +
+
+
+ +
+
+ + + +
+ +
+
+ CREATOR +
+
+
+
+ Edge +
+
+
+ NONE +
+
+
+
+ MIN +
+
+
+
+ MAX +
+
+
+
+ MIN_MAX +
+
+
+
+
+ +
+
+ CREATOR +
+
+
+
+ +
+
+ +
+
+ Companion +
+
+
+
+ +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
diff --git a/api/package-list b/api/package-list new file mode 100644 index 00000000..d4a97ae9 --- /dev/null +++ b/api/package-list @@ -0,0 +1,17 @@ +$dokka.format:html-v1 +$dokka.linkExtension:html + +module:dpadrecyclerview +com.rubensousa.dpadrecyclerview +com.rubensousa.dpadrecyclerview.layoutmanager +com.rubensousa.dpadrecyclerview.layoutmanager.layout +com.rubensousa.dpadrecyclerview.spacing +com.rubensousa.dpadrecyclerview.state +module:dpadrecyclerview-compose +com.rubensousa.dpadrecyclerview.compose +module:dpadrecyclerview-testing +com.rubensousa.dpadrecyclerview.testing +com.rubensousa.dpadrecyclerview.testing.actions +com.rubensousa.dpadrecyclerview.testing.assertions +com.rubensousa.dpadrecyclerview.testing.matchers +com.rubensousa.dpadrecyclerview.testing.rules diff --git a/api/scripts/clipboard.js b/api/scripts/clipboard.js new file mode 100644 index 00000000..7a4f33c5 --- /dev/null +++ b/api/scripts/clipboard.js @@ -0,0 +1,56 @@ +/* + * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +window.addEventListener('load', () => { + document.querySelectorAll('span.copy-icon').forEach(element => { + element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); + }) + + document.querySelectorAll('span.anchor-icon').forEach(element => { + element.addEventListener('click', (el) => { + if(element.hasAttribute('pointing-to')){ + const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') + copyTextToClipboard(element, location) + } + }); + }) +}) + +const copyElementsContentToClipboard = (element) => { + const selection = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(element.parentNode.parentNode); + selection.removeAllRanges(); + selection.addRange(range); + + copyAndShowPopup(element, () => selection.removeAllRanges()) +} + +const copyTextToClipboard = (element, text) => { + var textarea = document.createElement("textarea"); + textarea.textContent = text; + textarea.style.position = "fixed"; + document.body.appendChild(textarea); + textarea.select(); + + copyAndShowPopup(element, () => document.body.removeChild(textarea)) +} + +const copyAndShowPopup = (element, after) => { + try { + document.execCommand('copy'); + element.nextElementSibling.classList.add('active-popup'); + setTimeout(() => { + element.nextElementSibling.classList.remove('active-popup'); + }, 1200); + } catch (e) { + console.error('Failed to write to clipboard:', e) + } + finally { + if(after) after() + } +} + +const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] + diff --git a/api/scripts/main.js b/api/scripts/main.js new file mode 100644 index 00000000..ba6c3473 --- /dev/null +++ b/api/scripts/main.js @@ -0,0 +1,44 @@ +(()=>{var e={8527:e=>{e.exports=''},5570:e=>{e.exports=''},107:e=>{e.exports=''},7224:e=>{e.exports=''},538:e=>{e.exports=''},1924:(e,n,t)=>{"use strict";var r=t(210),o=t(5559),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},5559:(e,n,t)=>{"use strict";var r=t(8612),o=t(210),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),l=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),s=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var n=l(r,a,arguments);if(c&&u){var t=c(n,"length");t.configurable&&u(n,"length",{value:1+s(0,e.length-(arguments.length-1))})}return n};var f=function(){return l(r,i,arguments)};u?u(e.exports,"apply",{value:f}):e.exports.apply=f},4184:(e,n)=>{var t; +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],n=0;n{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(2207),e.exports.prototype.bindMultiple=t(3396),e.exports.prototype.unbind=t(9208),e.exports.prototype.trigger=t(9855),e.exports.prototype.reset=t(6214),e.exports.prototype.stopCallback=t(3450),e.exports.prototype.handleKey=t(3067),e.exports.prototype.addEvents=t(718),e.exports.prototype.bindSingle=t(8763),e.exports.prototype.getKeyInfo=t(5825),e.exports.prototype.pickBestAction=t(8608),e.exports.prototype.getReverseMap=t(3956),e.exports.prototype.getMatches=t(3373),e.exports.prototype.resetSequences=t(3346),e.exports.prototype.fireCallback=t(2684),e.exports.prototype.bindSequence=t(7103),e.exports.prototype.resetSequenceTimer=t(7309),e.exports.prototype.detach=t(7554),e.exports.instances=[],e.exports.reset=t(1822),e.exports.REVERSE_MAP=null},718:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(4323),r=e.element;e.eventHandler=t(9646).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},2207:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},3396:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(6770),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},7554:(e,n,t)=>{var r=t(4323).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},4323:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},2684:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(1350)(n),t(6103)(n))}},5825:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,u=[];for(r=t(4520)(e),a=t(7549),l=t(5355),c=t(8581),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,u,s,f=this,p=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(f.callbacks["any-character"]||[]).forEach((function(e){p.push(e)}));if(!f.callbacks[e])return p;for(u=t(8581),"keyup"===d&&u(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(4766))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},3067:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,u={},s=0,f=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(6770)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(4610),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},5532:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},8608:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6214:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},7309:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3346:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},3450:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},9855:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},9208:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},1822:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},6770:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(4766),r=t(5295),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},4610:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},8581:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},4520:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},1350:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},5355:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7549:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},5295:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},4766:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},6103:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},3362:()=>{var e;!function(){var e=Math.PI,n=2*e,t=e/180,r=document.createElement("div");document.head.appendChild(r);var o=self.ConicGradient=function(e){o.all.push(this),e=e||{},this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.repeating=!!e.repeating,this.size=e.size||Math.max(innerWidth,innerHeight),this.canvas.width=this.canvas.height=this.size;var n=e.stops;this.stops=(n||"").split(/\s*,(?![^(]*\))\s*/),this.from=0;for(var t=0;t0){var i=this.stops[0].clone();i.pos=0,this.stops.unshift(i)}if(void 0===this.stops[this.stops.length-1].pos)this.stops[this.stops.length-1].pos=1;else if(!this.repeating&&this.stops[this.stops.length-1].pos<1){var a=this.stops[this.stops.length-1].clone();a.pos=1,this.stops.push(a)}if(this.stops.forEach((function(e,n){if(void 0===e.pos){for(var t=n+1;this[t];t++)if(void 0!==this[t].pos){e.pos=this[n-1].pos+(this[t].pos-this[n-1].pos)/(t-n+1);break}}else n>0&&(e.pos=Math.max(e.pos,this[n-1].pos))}),this.stops),this.repeating){var l=(n=this.stops.slice())[n.length-1].pos-n[0].pos;for(t=0;this.stops[this.stops.length-1].pos<1&&t<1e4;t++)for(var c=0;c'},get png(){return this.canvas.toDataURL()},get r(){return Math.sqrt(2)*this.size/2},paint:function(){var e,n,r,o=this.context,i=this.r,a=this.size/2,l=0,c=this.stops[l];o.translate(this.size/2,this.size/2),o.rotate(-90*t),o.rotate(this.from*t),o.translate(-this.size/2,-this.size/2);for(var u=0;u<360;){if(u/360+1e-5>=c.pos){do{e=c,l++,c=this.stops[l]}while(c&&c!=e&&c.pos===e.pos);if(!c)break;var s=e.color+""==c.color+""&&e!=c;n=e.color.map((function(e,n){return c.color[n]-e}))}r=(u/360-e.pos)/(c.pos-e.pos);var f=s?c.color:n.map((function(n,t){var o=n*r+e.color[t];return t<3?255&o:o}));if(o.fillStyle="rgba("+f.join(",")+")",o.beginPath(),o.moveTo(a,a),s)var p=360*(c.pos-e.pos);else p=.5;var d=u*t,h=(d=Math.min(360*t,d))+p*t;h=Math.min(360*t,h+.02),o.arc(a,a,i,d,h),o.closePath(),o.fill(),u+=p}}},o.ColorStop=function(e,t){if(this.gradient=e,t){var r=t.match(/^(.+?)(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?\s*$/);if(this.color=o.ColorStop.colorToRGBA(r[1]),r[2]){var i=r[3];"%"==i||"0"===r[2]&&!i?this.pos=r[2]/100:"turn"==i?this.pos=+r[2]:"deg"==i?this.pos=r[2]/360:"grad"==i?this.pos=r[2]/400:"rad"==i&&(this.pos=r[2]/n)}r[4]&&(this.next=new o.ColorStop(e,r[1]+" "+r[4]+r[5]))}},o.ColorStop.prototype={clone:function(){var e=new o.ColorStop(this.gradient);return e.color=this.color,e.pos=this.pos,e},toString:function(){return"rgba("+this.color.join(", ")+") "+100*this.pos+"%"}},o.ColorStop.colorToRGBA=function(e){if(!Array.isArray(e)&&-1==e.indexOf("from")){r.style.color=e;var n=getComputedStyle(r).color.match(/rgba?\(([\d.]+), ([\d.]+), ([\d.]+)(?:, ([\d.]+))?\)/);return n&&(n.shift(),(n=n.map((function(e){return+e})))[3]=isNaN(n[3])?1:n[3]),n||[0,0,0,0]}return e}}(),self.StyleFix&&((e=document.createElement("p")).style.backgroundImage="conic-gradient(white, black)",e.style.backgroundImage=PrefixFree.prefix+"conic-gradient(white, black)",e.style.backgroundImage||StyleFix.register((function(e,n){return e.indexOf("conic-gradient")>-1&&(e=e.replace(/(?:repeating-)?conic-gradient\(\s*((?:\([^()]+\)|[^;()}])+?)\)/g,(function(e,n){return new ConicGradient({stops:n,repeating:e.indexOf("repeating-")>-1})}))),e})))},9662:(e,n,t)=>{var r=t(7854),o=t(614),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},9483:(e,n,t)=>{var r=t(7854),o=t(4411),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},6077:(e,n,t)=>{var r=t(7854),o=t(614),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},1223:(e,n,t)=>{var r=t(5112),o=t(30),i=t(3070),a=r("unscopables"),l=Array.prototype;null==l[a]&&i.f(l,a,{configurable:!0,value:o(null)}),e.exports=function(e){l[a][e]=!0}},1530:(e,n,t)=>{"use strict";var r=t(8710).charAt;e.exports=function(e,n,t){return n+(t?r(e,n).length:1)}},5787:(e,n,t)=>{var r=t(7854),o=t(7976),i=r.TypeError;e.exports=function(e,n){if(o(n,e))return e;throw i("Incorrect invocation")}},9670:(e,n,t)=>{var r=t(7854),o=t(111),i=r.String,a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not an object")}},7556:(e,n,t)=>{var r=t(7293);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},8533:(e,n,t)=>{"use strict";var r=t(2092).forEach,o=t(9341)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:(e,n,t)=>{"use strict";var r=t(7854),o=t(9974),i=t(6916),a=t(7908),l=t(3411),c=t(7659),u=t(4411),s=t(6244),f=t(6135),p=t(8554),d=t(1246),h=r.Array;e.exports=function(e){var n=a(e),t=u(this),r=arguments.length,g=r>1?arguments[1]:void 0,v=void 0!==g;v&&(g=o(g,r>2?arguments[2]:void 0));var A,b,m,y,E,_,C=d(n),w=0;if(!C||this==h&&c(C))for(A=s(n),b=t?new this(A):h(A);A>w;w++)_=v?g(n[w],w):n[w],f(b,w,_);else for(E=(y=p(n,C)).next,b=t?new this:[];!(m=i(E,y)).done;w++)_=v?l(y,g,[m.value,w],!0):m.value,f(b,w,_);return b.length=w,b}},1318:(e,n,t)=>{var r=t(5656),o=t(1400),i=t(6244),a=function(e){return function(n,t,a){var l,c=r(n),u=i(c),s=o(a,u);if(e&&t!=t){for(;u>s;)if((l=c[s++])!=l)return!0}else for(;u>s;s++)if((e||s in c)&&c[s]===t)return e||s||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:(e,n,t)=>{var r=t(9974),o=t(1702),i=t(8361),a=t(7908),l=t(6244),c=t(5417),u=o([].push),s=function(e){var n=1==e,t=2==e,o=3==e,s=4==e,f=6==e,p=7==e,d=5==e||f;return function(h,g,v,A){for(var b,m,y=a(h),E=i(y),_=r(g,v),C=l(E),w=0,x=A||c,k=n?x(h,C):t||p?x(h,0):void 0;C>w;w++)if((d||w in E)&&(m=_(b=E[w],w,y),e))if(n)k[w]=m;else if(m)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:u(k,b)}else switch(e){case 4:return!1;case 7:u(k,b)}return f?-1:o||s?s:k}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},1194:(e,n,t)=>{var r=t(7293),o=t(5112),i=t(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[e](Boolean).foo}))}},9341:(e,n,t)=>{"use strict";var r=t(7293);e.exports=function(e,n){var t=[][e];return!!t&&r((function(){t.call(null,n||function(){throw 1},1)}))}},3671:(e,n,t)=>{var r=t(7854),o=t(9662),i=t(7908),a=t(8361),l=t(6244),c=r.TypeError,u=function(e){return function(n,t,r,u){o(t);var s=i(n),f=a(s),p=l(s),d=e?p-1:0,h=e?-1:1;if(r<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,e?d<0:p<=d)throw c("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=h)d in f&&(u=t(u,f[d],d,s));return u}};e.exports={left:u(!1),right:u(!0)}},206:(e,n,t)=>{var r=t(1702);e.exports=r([].slice)},4362:(e,n,t)=>{var r=t(206),o=Math.floor,i=function(e,n){var t=e.length,c=o(t/2);return t<8?a(e,n):l(e,i(r(e,0,c),n),i(r(e,c),n),n)},a=function(e,n){for(var t,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=t)}return e},l=function(e,n,t,r){for(var o=n.length,i=t.length,a=0,l=0;a{var r=t(7854),o=t(3157),i=t(4411),a=t(111),l=t(5112)("species"),c=r.Array;e.exports=function(e){var n;return o(e)&&(n=e.constructor,(i(n)&&(n===c||o(n.prototype))||a(n)&&null===(n=n[l]))&&(n=void 0)),void 0===n?c:n}},5417:(e,n,t)=>{var r=t(7475);e.exports=function(e,n){return new(r(e))(0===n?0:n)}},3411:(e,n,t)=>{var r=t(9670),o=t(9212);e.exports=function(e,n,t,i){try{return i?n(r(t)[0],t[1]):n(t)}catch(n){o(e,"throw",n)}}},7072:(e,n,t)=>{var r=t(5112)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!o)return!1;var t=!1;try{var i={};i[r]=function(){return{next:function(){return{done:t=!0}}}},e(i)}catch(e){}return t}},4326:(e,n,t)=>{var r=t(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},648:(e,n,t)=>{var r=t(7854),o=t(1694),i=t(614),a=t(4326),l=t(5112)("toStringTag"),c=r.Object,u="Arguments"==a(function(){return arguments}());e.exports=o?a:function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=c(e),l))?t:u?a(n):"Object"==(r=a(n))&&i(n.callee)?"Arguments":r}},5631:(e,n,t)=>{"use strict";var r=t(3070).f,o=t(30),i=t(2248),a=t(9974),l=t(5787),c=t(408),u=t(654),s=t(6340),f=t(9781),p=t(2423).fastKey,d=t(9909),h=d.set,g=d.getterFor;e.exports={getConstructor:function(e,n,t,u){var s=e((function(e,r){l(e,d),h(e,{type:n,index:o(null),first:void 0,last:void 0,size:0}),f||(e.size=0),null!=r&&c(r,e[u],{that:e,AS_ENTRIES:t})})),d=s.prototype,v=g(n),A=function(e,n,t){var r,o,i=v(e),a=b(e,n);return a?a.value=t:(i.last=a={index:o=p(n,!0),key:n,value:t,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},b=function(e,n){var t,r=v(e),o=p(n);if("F"!==o)return r.index[o];for(t=r.first;t;t=t.next)if(t.key==n)return t};return i(d,{clear:function(){for(var e=v(this),n=e.index,t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),delete n[t.index],t=t.next;e.first=e.last=void 0,f?e.size=0:this.size=0},delete:function(e){var n=this,t=v(n),r=b(n,e);if(r){var o=r.next,i=r.previous;delete t.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),t.first==r&&(t.first=o),t.last==r&&(t.last=i),f?t.size--:n.size--}return!!r},forEach:function(e){for(var n,t=v(this),r=a(e,arguments.length>1?arguments[1]:void 0);n=n?n.next:t.first;)for(r(n.value,n.key,this);n&&n.removed;)n=n.previous},has:function(e){return!!b(this,e)}}),i(d,t?{get:function(e){var n=b(this,e);return n&&n.value},set:function(e,n){return A(this,0===e?0:e,n)}}:{add:function(e){return A(this,e=0===e?0:e,e)}}),f&&r(d,"size",{get:function(){return v(this).size}}),s},setStrong:function(e,n,t){var r=n+" Iterator",o=g(n),i=g(r);u(e,n,(function(e,n){h(this,{type:r,target:e,state:o(e),kind:n,last:void 0})}),(function(){for(var e=i(this),n=e.kind,t=e.last;t&&t.removed;)t=t.previous;return e.target&&(e.last=t=t?t.next:e.state.first)?"keys"==n?{value:t.key,done:!1}:"values"==n?{value:t.value,done:!1}:{value:[t.key,t.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),t?"entries":"values",!t,!0),s(n)}}},9320:(e,n,t)=>{"use strict";var r=t(1702),o=t(2248),i=t(2423).getWeakData,a=t(9670),l=t(111),c=t(5787),u=t(408),s=t(2092),f=t(2597),p=t(9909),d=p.set,h=p.getterFor,g=s.find,v=s.findIndex,A=r([].splice),b=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},E=function(e,n){return g(e.entries,(function(e){return e[0]===n}))};y.prototype={get:function(e){var n=E(this,e);if(n)return n[1]},has:function(e){return!!E(this,e)},set:function(e,n){var t=E(this,e);t?t[1]=n:this.entries.push([e,n])},delete:function(e){var n=v(this.entries,(function(n){return n[0]===e}));return~n&&A(this.entries,n,1),!!~n}},e.exports={getConstructor:function(e,n,t,r){var s=e((function(e,o){c(e,p),d(e,{type:n,id:b++,frozen:void 0}),null!=o&&u(o,e[r],{that:e,AS_ENTRIES:t})})),p=s.prototype,g=h(n),v=function(e,n,t){var r=g(e),o=i(a(n),!0);return!0===o?m(r).set(n,t):o[r.id]=t,e};return o(p,{delete:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).delete(e):t&&f(t,n.id)&&delete t[n.id]},has:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).has(e):t&&f(t,n.id)}}),o(p,t?{get:function(e){var n=g(this);if(l(e)){var t=i(e);return!0===t?m(n).get(e):t?t[n.id]:void 0}},set:function(e,n){return v(this,e,n)}}:{add:function(e){return v(this,e,!0)}}),s}}},7710:(e,n,t)=>{"use strict";var r=t(2109),o=t(7854),i=t(1702),a=t(4705),l=t(1320),c=t(2423),u=t(408),s=t(5787),f=t(614),p=t(111),d=t(7293),h=t(7072),g=t(8003),v=t(9587);e.exports=function(e,n,t){var A=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),m=A?"set":"add",y=o[e],E=y&&y.prototype,_=y,C={},w=function(e){var n=i(E[e]);l(E,e,"add"==e?function(e){return n(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:"get"==e?function(e){return b&&!p(e)?void 0:n(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:function(e,t){return n(this,0===e?0:e,t),this})};if(a(e,!f(y)||!(b||E.forEach&&!d((function(){(new y).entries().next()})))))_=t.getConstructor(n,e,A,m),c.enable();else if(a(e,!0)){var x=new _,k=x[m](b?{}:-0,1)!=x,S=d((function(){x.has(1)})),O=h((function(e){new y(e)})),B=!b&&d((function(){for(var e=new y,n=5;n--;)e[m](n,n);return!e.has(-0)}));O||((_=n((function(e,n){s(e,E);var t=v(new y,e,_);return null!=n&&u(n,t[m],{that:t,AS_ENTRIES:A}),t}))).prototype=E,E.constructor=_),(S||B)&&(w("delete"),w("has"),A&&w("get")),(B||k)&&w(m),b&&E.clear&&delete E.clear}return C[e]=_,r({global:!0,forced:_!=y},C),g(_,e),b||t.setStrong(_,e,A),_}},9920:(e,n,t)=>{var r=t(2597),o=t(3887),i=t(1236),a=t(3070);e.exports=function(e,n){for(var t=o(n),l=a.f,c=i.f,u=0;u{var r=t(5112)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,"/./"[e](n)}catch(e){}}return!1}},8544:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},4230:(e,n,t)=>{var r=t(1702),o=t(4488),i=t(1340),a=/"/g,l=r("".replace);e.exports=function(e,n,t,r){var c=i(o(e)),u="<"+n;return""!==t&&(u+=" "+t+'="'+l(i(r),a,""")+'"'),u+">"+c+""}},4994:(e,n,t)=>{"use strict";var r=t(3383).IteratorPrototype,o=t(30),i=t(9114),a=t(8003),l=t(7497),c=function(){return this};e.exports=function(e,n,t){var u=n+" Iterator";return e.prototype=o(r,{next:i(1,t)}),a(e,u,!1,!0),l[u]=c,e}},8880:(e,n,t)=>{var r=t(9781),o=t(3070),i=t(9114);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},9114:e=>{e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},6135:(e,n,t)=>{"use strict";var r=t(4948),o=t(3070),i=t(9114);e.exports=function(e,n,t){var a=r(n);a in e?o.f(e,a,i(0,t)):e[a]=t}},8709:(e,n,t)=>{"use strict";var r=t(7854),o=t(9670),i=t(2140),a=r.TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return i(this,e)}},654:(e,n,t)=>{"use strict";var r=t(2109),o=t(6916),i=t(1913),a=t(6530),l=t(614),c=t(4994),u=t(9518),s=t(7674),f=t(8003),p=t(8880),d=t(1320),h=t(5112),g=t(7497),v=t(3383),A=a.PROPER,b=a.CONFIGURABLE,m=v.IteratorPrototype,y=v.BUGGY_SAFARI_ITERATORS,E=h("iterator"),_="keys",C="values",w="entries",x=function(){return this};e.exports=function(e,n,t,a,h,v,k){c(t,n,a);var S,O,B,I=function(e){if(e===h&&R)return R;if(!y&&e in j)return j[e];switch(e){case _:case C:case w:return function(){return new t(this,e)}}return function(){return new t(this)}},T=n+" Iterator",P=!1,j=e.prototype,z=j[E]||j["@@iterator"]||h&&j[h],R=!y&&z||I(h),M="Array"==n&&j.entries||z;if(M&&(S=u(M.call(new e)))!==Object.prototype&&S.next&&(i||u(S)===m||(s?s(S,m):l(S[E])||d(S,E,x)),f(S,T,!0,!0),i&&(g[T]=x)),A&&h==C&&z&&z.name!==C&&(!i&&b?p(j,"name",C):(P=!0,R=function(){return o(z,this)})),h)if(O={values:I(C),keys:v?R:I(_),entries:I(w)},k)for(B in O)(y||P||!(B in j))&&d(j,B,O[B]);else r({target:n,proto:!0,forced:y||P},O);return i&&!k||j[E]===R||d(j,E,R,{name:h}),g[n]=R,O}},7235:(e,n,t)=>{var r=t(857),o=t(2597),i=t(6061),a=t(3070).f;e.exports=function(e){var n=r.Symbol||(r.Symbol={});o(n,e)||a(n,e,{value:i.f(e)})}},9781:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(e,n,t)=>{var r=t(7854),o=t(111),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,n,t)=>{var r=t(317)("span").classList,o=r&&r.constructor&&r.constructor.prototype;e.exports=o===Object.prototype?void 0:o},8886:(e,n,t)=>{var r=t(8113).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},256:(e,n,t)=>{var r=t(8113);e.exports=/MSIE|Trident/.test(r)},5268:(e,n,t)=>{var r=t(4326),o=t(7854);e.exports="process"==r(o.process)},8113:(e,n,t)=>{var r=t(5005);e.exports=r("navigator","userAgent")||""},7392:(e,n,t)=>{var r,o,i=t(7854),a=t(8113),l=i.process,c=i.Deno,u=l&&l.versions||c&&c.version,s=u&&u.v8;s&&(o=(r=s.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},8008:(e,n,t)=>{var r=t(8113).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(e,n,t)=>{var r=t(7854),o=t(1236).f,i=t(8880),a=t(1320),l=t(3505),c=t(9920),u=t(4705);e.exports=function(e,n){var t,s,f,p,d,h=e.target,g=e.global,v=e.stat;if(t=g?r:v?r[h]||l(h,{}):(r[h]||{}).prototype)for(s in n){if(p=n[s],f=e.noTargetGet?(d=o(t,s))&&d.value:t[s],!u(g?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;c(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(t,s,p,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,n,t)=>{"use strict";t(4916);var r=t(1702),o=t(1320),i=t(2261),a=t(7293),l=t(5112),c=t(8880),u=l("species"),s=RegExp.prototype;e.exports=function(e,n,t,f){var p=l(e),d=!a((function(){var n={};return n[p]=function(){return 7},7!=""[e](n)})),h=d&&!a((function(){var n=!1,t=/a/;return"split"===e&&((t={}).constructor={},t.constructor[u]=function(){return t},t.flags="",t[p]=/./[p]),t.exec=function(){return n=!0,null},t[p](""),!n}));if(!d||!h||t){var g=r(/./[p]),v=n(p,""[e],(function(e,n,t,o,a){var l=r(e),c=n.exec;return c===i||c===s.exec?d&&!a?{done:!0,value:g(n,t,o)}:{done:!0,value:l(t,n,o)}:{done:!1}}));o(String.prototype,e,v[0]),o(s,p,v[1])}f&&c(s[p],"sham",!0)}},6677:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:e=>{var n=Function.prototype,t=n.apply,r=n.bind,o=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?o.bind(t):function(){return o.apply(t,arguments)})},9974:(e,n,t)=>{var r=t(1702),o=t(9662),i=r(r.bind);e.exports=function(e,n){return o(e),void 0===n?e:i?i(e,n):function(){return e.apply(n,arguments)}}},7065:(e,n,t)=>{"use strict";var r=t(7854),o=t(1702),i=t(9662),a=t(111),l=t(2597),c=t(206),u=r.Function,s=o([].concat),f=o([].join),p={},d=function(e,n,t){if(!l(p,n)){for(var r=[],o=0;o{var n=Function.prototype.call;e.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},6530:(e,n,t)=>{var r=t(9781),o=t(2597),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,l=o(i,"name"),c=l&&"something"===function(){}.name,u=l&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:l,PROPER:c,CONFIGURABLE:u}},1702:e=>{var n=Function.prototype,t=n.bind,r=n.call,o=t&&t.bind(r);e.exports=t?function(e){return e&&o(r,e)}:function(e){return e&&function(){return r.apply(e,arguments)}}},5005:(e,n,t)=>{var r=t(7854),o=t(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,n){return arguments.length<2?i(r[e]):r[e]&&r[e][n]}},1246:(e,n,t)=>{var r=t(648),o=t(8173),i=t(7497),a=t(5112)("iterator");e.exports=function(e){if(null!=e)return o(e,a)||o(e,"@@iterator")||i[r(e)]}},8554:(e,n,t)=>{var r=t(7854),o=t(6916),i=t(9662),a=t(9670),l=t(6330),c=t(1246),u=r.TypeError;e.exports=function(e,n){var t=arguments.length<2?c(e):n;if(i(t))return a(o(t,e));throw u(l(e)+" is not iterable")}},8173:(e,n,t)=>{var r=t(9662);e.exports=function(e,n){var t=e[n];return null==t?void 0:r(t)}},647:(e,n,t)=>{var r=t(1702),o=t(7908),i=Math.floor,a=r("".charAt),l=r("".replace),c=r("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,n,t,r,f,p){var d=t+e.length,h=r.length,g=s;return void 0!==f&&(f=o(f),g=u),l(p,g,(function(o,l){var u;switch(a(l,0)){case"$":return"$";case"&":return e;case"`":return c(n,0,t);case"'":return c(n,d);case"<":u=f[c(l,1,-1)];break;default:var s=+l;if(0===s)return o;if(s>h){var p=i(s/10);return 0===p?o:p<=h?void 0===r[p-1]?a(l,1):r[p-1]+a(l,1):o}u=r[s-1]}return void 0===u?"":u}))}},7854:(e,n,t)=>{var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t.g&&t.g)||function(){return this}()||Function("return this")()},2597:(e,n,t)=>{var r=t(1702),o=t(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,n){return i(o(e),n)}},3501:e=>{e.exports={}},490:(e,n,t)=>{var r=t(5005);e.exports=r("document","documentElement")},4664:(e,n,t)=>{var r=t(9781),o=t(7293),i=t(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:(e,n,t)=>{var r=t(7854),o=t(1702),i=t(7293),a=t(4326),l=r.Object,c=o("".split);e.exports=i((function(){return!l("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):l(e)}:l},9587:(e,n,t)=>{var r=t(614),o=t(111),i=t(7674);e.exports=function(e,n,t){var a,l;return i&&r(a=n.constructor)&&a!==t&&o(l=a.prototype)&&l!==t.prototype&&i(e,l),e}},2788:(e,n,t)=>{var r=t(1702),o=t(614),i=t(5465),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},2423:(e,n,t)=>{var r=t(2109),o=t(1702),i=t(3501),a=t(111),l=t(2597),c=t(3070).f,u=t(8006),s=t(1156),f=t(2050),p=t(9711),d=t(6677),h=!1,g=p("meta"),v=0,A=function(e){c(e,g,{value:{objectID:"O"+v++,weakData:{}}})},b=e.exports={enable:function(){b.enable=function(){},h=!0;var e=u.f,n=o([].splice),t={};t[g]=1,e(t).length&&(u.f=function(t){for(var r=e(t),o=0,i=r.length;o{var r,o,i,a=t(8536),l=t(7854),c=t(1702),u=t(111),s=t(8880),f=t(2597),p=t(5465),d=t(6200),h=t(3501),g="Object already initialized",v=l.TypeError,A=l.WeakMap;if(a||p.state){var b=p.state||(p.state=new A),m=c(b.get),y=c(b.has),E=c(b.set);r=function(e,n){if(y(b,e))throw new v(g);return n.facade=e,E(b,e,n),n},o=function(e){return m(b,e)||{}},i=function(e){return y(b,e)}}else{var _=d("state");h[_]=!0,r=function(e,n){if(f(e,_))throw new v(g);return n.facade=e,s(e,_,n),n},o=function(e){return f(e,_)?e[_]:{}},i=function(e){return f(e,_)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(n){var t;if(!u(n)||(t=o(n)).type!==e)throw v("Incompatible receiver, "+e+" required");return t}}}},7659:(e,n,t)=>{var r=t(5112),o=t(7497),i=r("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},3157:(e,n,t)=>{var r=t(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:e=>{e.exports=function(e){return"function"==typeof e}},4411:(e,n,t)=>{var r=t(1702),o=t(7293),i=t(614),a=t(648),l=t(5005),c=t(2788),u=function(){},s=[],f=l("Reflect","construct"),p=/^\s*(?:class|function)\b/,d=r(p.exec),h=!p.exec(u),g=function(e){if(!i(e))return!1;try{return f(u,s,e),!0}catch(e){return!1}};e.exports=!f||o((function(){var e;return g(g.call)||!g(Object)||!g((function(){e=!0}))||e}))?function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return h||!!d(p,c(e))}:g},4705:(e,n,t)=>{var r=t(7293),o=t(614),i=/#|\.prototype\./,a=function(e,n){var t=c[l(e)];return t==s||t!=u&&(o(n)?r(n):!!n)},l=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",s=a.POLYFILL="P";e.exports=a},111:(e,n,t)=>{var r=t(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},7850:(e,n,t)=>{var r=t(111),o=t(4326),i=t(5112)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},2190:(e,n,t)=>{var r=t(7854),o=t(5005),i=t(614),a=t(7976),l=t(3307),c=r.Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var n=o("Symbol");return i(n)&&a(n.prototype,c(e))}},408:(e,n,t)=>{var r=t(7854),o=t(9974),i=t(6916),a=t(9670),l=t(6330),c=t(7659),u=t(6244),s=t(7976),f=t(8554),p=t(1246),d=t(9212),h=r.TypeError,g=function(e,n){this.stopped=e,this.result=n},v=g.prototype;e.exports=function(e,n,t){var r,A,b,m,y,E,_,C=t&&t.that,w=!(!t||!t.AS_ENTRIES),x=!(!t||!t.IS_ITERATOR),k=!(!t||!t.INTERRUPTED),S=o(n,C),O=function(e){return r&&d(r,"normal",e),new g(!0,e)},B=function(e){return w?(a(e),k?S(e[0],e[1],O):S(e[0],e[1])):k?S(e,O):S(e)};if(x)r=e;else{if(!(A=p(e)))throw h(l(e)+" is not iterable");if(c(A)){for(b=0,m=u(e);m>b;b++)if((y=B(e[b]))&&s(v,y))return y;return new g(!1)}r=f(e,A)}for(E=r.next;!(_=i(E,r)).done;){try{y=B(_.value)}catch(e){d(r,"throw",e)}if("object"==typeof y&&y&&s(v,y))return y}return new g(!1)}},9212:(e,n,t)=>{var r=t(6916),o=t(9670),i=t(8173);e.exports=function(e,n,t){var a,l;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){l=!0,a=e}if("throw"===n)throw t;if(l)throw a;return o(a),t}},3383:(e,n,t)=>{"use strict";var r,o,i,a=t(7293),l=t(614),c=t(30),u=t(9518),s=t(1320),f=t(5112),p=t(1913),d=f("iterator"),h=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):h=!0),null==r||a((function(){var e={};return r[d].call(e)!==e}))?r={}:p&&(r=c(r)),l(r[d])||s(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},7497:e=>{e.exports={}},6244:(e,n,t)=>{var r=t(7466);e.exports=function(e){return r(e.length)}},133:(e,n,t)=>{var r=t(7392),o=t(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:(e,n,t)=>{var r=t(7854),o=t(614),i=t(2788),a=r.WeakMap;e.exports=o(a)&&/native code/.test(i(a))},3929:(e,n,t)=>{var r=t(7854),o=t(7850),i=r.TypeError;e.exports=function(e){if(o(e))throw i("The method doesn't accept regular expressions");return e}},1574:(e,n,t)=>{"use strict";var r=t(9781),o=t(1702),i=t(6916),a=t(7293),l=t(1956),c=t(5181),u=t(5296),s=t(7908),f=t(8361),p=Object.assign,d=Object.defineProperty,h=o([].concat);e.exports=!p||a((function(){if(r&&1!==p({b:1},p(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},n={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach((function(e){n[e]=e})),7!=p({},e)[t]||l(p({},n)).join("")!=o}))?function(e,n){for(var t=s(e),o=arguments.length,a=1,p=c.f,d=u.f;o>a;)for(var g,v=f(arguments[a++]),A=p?h(l(v),p(v)):l(v),b=A.length,m=0;b>m;)g=A[m++],r&&!i(d,v,g)||(t[g]=v[g]);return t}:p},30:(e,n,t)=>{var r,o=t(9670),i=t(6048),a=t(748),l=t(3501),c=t(490),u=t(317),s=t(6200),f=s("IE_PROTO"),p=function(){},d=function(e){return" + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+
+ + + + +

Changelog

+

Version 1.3.0

+

1.3.0-rc02

+

2024-07-11

+

Bug fixes

+
    +
  • Fixed DpadRecyclerView not immediately stopping the search for the pivot in some scenarios (#238)
  • +
+

1.3.0-rc01

+

2024-07-08

+
    +
  • Reverted default of setLayoutWhileScrollingEnabled() back to true.
  • +
+

1.3.0-beta02

+

2024-06-20

+

Bug fixes

+
    +
  • Fixed OnViewFocusedListener not working correctly for a parent RecyclerView when a nested RecyclerView doesn't have a listener registered (#229)
  • +
  • Fixed DpadRecyclerView losing focus when adapter is cleared (#232)
  • +
+

1.3.0-beta01

+

2024-06-17

+

Dependency updates

+
    +
  • Updated library to Kotlin 2.0
  • +
  • Updated Compose ui libraries to 1.7.0-beta03
  • +
+

New Features

+
    +
  • Added DpadDragHelper for drag and drop support (#216). Documentation available here.
  • +
  • Now recyclerView.setFocusableDirection(FocusableDirection.CIRCULAR) can also be used in linear layouts that don't fill the entire space. (#225
  • +
+

Improvements

+
    +
  • Now focusOutFront and focusOutBack are enabled by default due to feedback from library users (#223)
  • +
  • Improved focus behavior for grids with uneven spans that have incomplete rows (#224)
  • +
+

1.3.0-alpha04

+

2024-06-04

+

New Features

+
    +
  • Added DpadSelectionSnapHelper to improve selection on touch events. (#215)
  • +
  • Added isFocusable to DpadComposeFocusViewHolder to allow disabling focus for some items.
  • +
+

Bug fixes

+
    +
  • Fixed initial selection being always at position 0, even when that view is not focusable.
  • +
  • Fixed some rows not receiving focus in grids using DpadSpanSizeLookup. (#217)
  • +
  • Fixed fast scrolling not working correctly in some grids using DpadSpanSizeLookup. (#218)
  • +
+

1.3.0-alpha03

+

2024-05-31

+

New Features

+
    +
  • Added DpadStateRegistry that assists in saving and restoring the scroll state or view state of ViewHolders (#45)
  • +
+

Improvements

+
    +
  • Disable layout passes during scroll events by default. This is an attempt to fix (#207) + To fallback to the previous behavior, please use setLayoutWhileScrollingEnabled(true)
  • +
+

Bug fixes

+
    +
  • Fixed issue with grid layouts with different spans after item removals. (#210)
  • +
  • Fixed DpadRecyclerView losing focus in some cases when adapter contents are updated during scroll events. (#206)
  • +
+

1.3.0-alpha02

+

2024-03-23

+

Bug fixes

+
    +
  • Fixed grids not aligning to the keyline for the last row in some cases. (#203)
  • +
+

1.3.0-alpha01

+

2024-03-17

+

New Features

+
    +
  • Added DpadComposeFocusViewHolder that allows sending the focus state down to Composables (#193)
  • +
  • Added Modifier.dpadClickable for playing the click sound after clicking on a Composable. Fix for: (/b/268268856)
  • +
  • Allow skipping layout requests during scroll with setLayoutWhileScrollingEnabled(false) (#196)
  • +
  • New addOnViewFocusedListener to observe focus changes independently from selection changes. (#197)
  • +
+

API Changes

+
    +
  • DpadAbstractComposeViewHolder is now removed. Replace it with either DpadComposeFocusViewHolder or DpadComposeViewHolder.
  • +
+

Version 1.2.0

+

1.2.0

+

2024-03-13

+
    +
  • No changes since 1.2.0-rc01
  • +
+

Important changes since 1.1.0

+
    +
  • Added new RecyclerViewCompositionStrategy.DisposeOnRecycled for compose interop + to re-use compositions when views are detached and attached from the window again.
  • +
  • Added new setSelectedSubPosition that allows passing a callback for the target alignment (#43)
  • +
  • Added support for scrollbars
  • +
  • Added DpadScroller for scrolling without any alignment. Typical use case is for long text displays (terms & conditions and consent pages).
  • +
+

1.2.0-rc01

+

2024-02-03

+

Bug fixes

+
    +
  • Fixed focus being sent to the wrong item when scrolling with touch events before pressing a key (#188)
  • +
+

1.2.0-beta02

+

2024-01-28

+

New Features

+
    +
  • Added new RecyclerViewCompositionStrategy.DisposeOnRecycled for compose interop +to re-use compositions when views are detached and attached from the window again.
  • +
+

Bug fixes

+
    +
  • Fixed views not being laid out correctly sometimes when setRecycleChildrenOnDetach is used.
  • +
+

1.2.0-beta01

+

2024-01-17

+

New Features

+
    +
  • Added new setSelectedSubPosition that allows passing a callback for the target alignment (#43)
  • +
+

Bug fixes

+
    +
  • Fixed navigation sound not being played when searching for pivot (#167)
  • +
  • Fixed sub selection not being dispatched when used multiple times in a row
  • +
+

1.2.0-alpha03

+

2024-01-10

+

Bug fixes

+
    +
  • Fixed crash when requesting layout after a selection to an index out of bounds (#178)
  • +
+

1.2.0-alpha02

+

2023-12-27

+

Bug fixes

+
    +
  • Fixed layout jumping to the top when the user scrolls with touch events (#171)
  • +
  • Fixed alignment configuration not being respected for small lists (#172)
  • +
+

1.2.0-alpha01

+

2023-11-25

+

New Features

+
    +
  • Added support for scrollbars
  • +
  • Added DpadScroller for scrolling without any alignment. Typical use case is for long text displays (terms & conditions and consent pages).
  • +
+

Version 1.1.0

+

1.1.0

+

2023-11-12

+
    +
  • No changes since 1.1.0-rc01
  • +
+

1.1.0-rc01

+

2023-10-18

+

Dependency updates

+
    +
  • Updated androidx.recyclerview to version 1.3.2 to fix sporadic crashes during animations: (/9e69afd)
  • +
  • Updated androidx.collection to stable version 1.3.0
  • +
+

1.1.0-beta02

+

2023-09-15

+

Bug fixes

+
    +
  • Fixed wrong scrolling behavior when the app:spanCount attribute is used for grids (#162)
  • +
+

1.1.0-beta01

+

2023-09-10

+

Bug fixes

+
    +
  • Fixed wrong scrolling behavior when the layout isn't completely filled and Edge.MAX alignment is used: (#160)
  • +
  • Fixed XML attribute app:dpadRecyclerViewParentAlignmentPreferKeylineOverEdge not being applied correctly
  • +
+

1.1.0-alpha03

+

2023-08-04

+

Bug fixes

+
    +
  • Fixed grid layout not placing views in the correct spans when scrolling in opposite direction: (#156)
  • +
+

1.1.0-alpha02

+

2023-06-23

+

Bug fixes

+
    +
  • Fixed crash when updating adapter contents too frequently: (#153)
  • +
+

1.1.0-alpha01

+

2023-06-08

+

New Features

+
    +
  • Added support for endless scrolling with looping adapter contents: (#20). + Check this for more information.
  • +
+

Version 1.0.0

+

1.0.0

+

2023-05-16

+

New Features

+
    +
  • Added support for API 19 (#146)
  • +
  • Added missing XML attribute for parent alignment app:dpadRecyclerViewParentAlignmentPreferKeylineOverEdge (#145)
  • +
+

Bug fixes

+
    +
  • Fixed crash when R8 is applied (#122)
  • +
+

1.0.0-rc01

+

2023-05-07

+

Dependency updates

+
    +
  • Removed consumer proguard rules
  • +
  • Exposed recyclerview dependency to clients
  • +
+

1.0.0-beta03

+

2023-05-03

+

Dependency updates

+
    +
  • Updated compose-ui to version 1.4.2
  • +
+

New Features

+
    +
  • Added getSpanSizeLookup() to DpadRecyclerView
  • +
  • Added onViewHolderSelectedAndAligned to DpadViewHolder
  • +
+

Compose

+
    +
  • Added DpadAbstractComposeViewHolder to allow subclasses to get access to focus changes. Check Compose interoperability for more information.
  • +
+

Testing

+

See the documentation here

+
    +
  • Added KeyEvents.back() to easily press back key events
  • +
  • Added DpadRecyclerViewActions.scrollTo and DpadRecyclerViewActions.scrollToHolder to scroll to specific ViewHolders using KeyEvents.
  • +
  • Added DpadViewAssertions for asserting focus states:
      +
    • DpadViewAssertions.hasFocus()
    • +
    • DpadViewAssertions.doesNotHaveFocus()
    • +
    • DpadViewAssertions.isFocused()
    • +
    • DpadViewAssertions.isNotFocused()
    • +
    +
  • +
+

1.0.0-beta02

+

2023-04-18

+

Dependency updates

+
    +
  • Updated RecyclerView to stable version 1.3.0
  • +
+

New Features

+
    +
  • Added support for fading edges. Check this for more information. (#18).
  • +
+

Bug fixes

+
    +
  • Fixed DpadRecyclerView not measuring itself correctly when wrap_content is used. (#123)
  • +
  • Fixed max edge alignment not working correctly when scrolling back. (#124)
  • +
+

1.0.0-beta01

+

2023-04-02

+

Bug fixes

+
    +
  • Fixed crash in grid layout when pivot is updated during pagination. (#114)
  • +
+

1.0.0-alpha05

+

2023-02-21

+

New Features

+
    +
  • New dpadrecyclerview-compose module that contains DpadComposeViewHolder for Compose interoperability. Check Compose interoperability for more information.
  • +
  • Allow setting 0 max pending moves with setSmoothScrollMaxPendingMoves(0) to fully prevent unwanted scroll events.
  • +
+

API changes

+
    +
  • offsetRatio in ParentAlignment, ChildAlignment and SubPositionAlignment was renamed to fraction.
  • +
+

Bug fixes

+
    +
  • Fixed alignment issue when the first item has decoration (#91)
  • +
  • Fixed alignment issue when Edge.MIN is used and there's a small number of adapter items (#93)
  • +
  • Fixed focus changing to the incorrect span in a grid (#96)
  • +
  • Fixed focus being lost when scrolling a grid and triggering layout passes at the same time (#102)
  • +
  • Fixed DpadRecyclerView scrolling automatically to the current selected position when there's a touch event (#104)
  • +
  • Fixed pending alignments in opposite direction not being ignored (#106)
  • +
+

Testing

+
    +
  • New KeyEvents.click() to easily dispatch click events in UI tests
  • +
+

1.0.0-alpha04

+

2023-02-13

+

New Features

+
    +
  • Added DpadLinearSpacingItemDecoration and DpadGridSpacingItemDecoration to easily set spacing between items
  • +
  • Added setScrollEnabled to enable or disable scroll events
  • +
  • Added setLayoutEnabled to enable or disable the layout of children
  • +
  • Added support for reverse layout via setReverseLayout
  • +
  • Restored support for basic touch event scrolling without triggering selection or alignment changes
  • +
  • Added support for item prefetching for nested RecyclerViews
  • +
  • setSmoothScrollMaxPendingAlignments allows limiting the number of scroll changes still not applied
  • +
  • setSmoothScrollMaxPendingMoves allows remembering DPAD events not yet applied
  • +
  • Improved fast smooth scrolling in grids with different span sizes
  • +
  • Added setOnChildLaidOutListener to observe when each view is laid out
  • +
  • setFocusSearchEnabledDuringAnimations allows enabling or disabling focus changes during item animations.
  • +
+

API Changes

+
    +
  • ViewHolderAlignment was renamed to SubPositionAlignment. Now DpadViewHolder returns these alignments in getSubPositionAlignments.
  • +
+

Bug fixes

+
    +
  • Fixed DpadRecyclerView not searching for focus if it's currently retaining focus due to a pivot removal. This prevented accumulating pending moves during smooth scrolling.
  • +
  • A nested DpadRecyclerView now won't search for focus if its parent RecyclerView is still smooth scrolling (#50)
  • +
  • Alignment not being restored correctly for small lists (#71)
  • +
  • Unnecessary ItemAnimator animations were running when scrolling during item changes (#47)
  • +
  • a11y scroll actions were not triggering scroll events (#66)
  • +
  • Circular focus not working correctly for the first row (#37)
  • +
+

Testing

+
    +
  • DisableIdleTimeoutRule will now wait for idle input after the test is over to avoid dispatching key events to other tests
  • +
+

1.0.0-alpha03

+

2023-01-26

+

New Features

+
    +
  • Added support for findFirstVisibleItemPosition and findLastVisibleItemPosition (#23)
  • +
  • Added support for recycling children on detach (#17)
  • +
+

API Changes

+
    +
  • Replaced DpadLayoutManager with new PivotLayoutManager for proper customization of layout logic (#10), (#16)
  • +
+

1.0.0-alpha02

+

2022-12-10

+

API Changes

+
    +
  • Allow extending from DpadRecyclerView
  • +
  • Removed RecyclerView.canScrollHorizontally and RecyclerView.canScrollVertically since they're not used and clients can create them themselves
  • +
+

1.0.0-alpha01

+

2022-11-06

+
    +
  • Initial alpha release
  • +
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/compose/index.html b/compose/index.html new file mode 100644 index 00000000..4e6275c6 --- /dev/null +++ b/compose/index.html @@ -0,0 +1,1042 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compose interoperability - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + +

Compose interoperability

+

The dpadrecyclerview-compose module contains the following:

+
    +
  • DpadComposeFocusViewHolder: ViewHolder that exposes a function to render a Composable and sends the focus directly to Composables.
  • +
  • DpadComposeViewHolder: ViewHolder that exposes a function to render a Composable but keeps the focus state in the View system
  • +
  • RecyclerViewCompositionStrategy.DisposeOnRecycled: a custom ViewCompositionStrategy that only disposes compositions when ViewHolders are recycled
  • +
+

Compose ViewHolder

+

Receive focus inside Composables

+

Use DpadComposeFocusViewHolder to let your Composables receive the focus state.

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
class ComposeItemAdapter(
+    private val onItemClick: (Int) -> Unit
+) : ListAdapter<Int, DpadComposeFocusViewHolder<Int>>(Item.DIFF_CALLBACK) {
+
+    override fun onCreateViewHolder(
+        parent: ViewGroup,
+        viewType: Int
+    ): DpadComposeFocusViewHolder<Int> {
+        return DpadComposeFocusViewHolder(parent) { item ->
+            ItemComposable(
+                item = item,
+                onClick = {
+                    onItemClick(item)
+                }
+            )
+        }
+    }
+
+    override fun onBindViewHolder(
+        holder: DpadComposeFocusViewHolder<Int>, 
+        position: Int
+    ) {
+        holder.setItemState(getItem(position))
+    }
+
+}
+
+

Then use the standard focus APIs to react to focus changes:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
@Composable
+fun ItemComposable(
+    item: Int, 
+    onClick: () -> Unit,
+    modifier: Modifier = Modifier,
+) {
+    var isFocused by remember { mutableStateOf(false) }
+    val backgroundColor = if (isFocused) Color.White else Color.Black
+    val textColor = if (isFocused) Color.Black else Color.White
+    Box(
+        modifier = modifier
+            .background(backgroundColor)
+            .onFocusChanged { focusState ->
+                isFocused = focusState.hasFocus
+            }
+            .focusable()
+            .dpadClickable {
+                onClick()
+            },
+        contentAlignment = Alignment.Center,
+    ) {
+        Text(
+            text = item.toString(),
+            color = textColor,
+            fontSize = 35.sp
+        )
+    }
+}
+
+

Keep focus inside the view system

+

If you want to keep the focus inside the View system, use DpadComposeViewHolder instead:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
class ComposeItemAdapter(
+    private val onItemClick: (Int) -> Unit
+) : ListAdapter<Int, DpadComposeViewHolder<Int>>(Item.DIFF_CALLBACK) {
+
+    override fun onCreateViewHolder(
+        parent: ViewGroup,
+        viewType: Int
+    ): DpadComposeViewHolder<Int> {
+        return DpadComposeViewHolder(
+            parent,
+            onClick = onItemClick
+        ) { item, isFocused ->
+            ItemComposable(item, isFocused)
+        }
+    }
+
+    override fun onBindViewHolder(
+        holder: DpadComposeViewHolder<Int>, 
+        position: Int
+    ) {
+        holder.setItemState(getItem(position))
+    }
+
+}
+
+

In this case, you receive the focus state as an input that you can pass to your Composables:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
@Composable
+fun ItemComposable(item: Int, isFocused: Boolean) {
+    val backgroundColor = if (isFocused) Color.White else Color.Black
+    val textColor = if (isFocused) Color.Black else Color.White
+    Box(
+        modifier = Modifier.background(backgroundColor),
+        contentAlignment = Alignment.Center,
+    ) {
+        Text(
+            text = item.toString(),
+            color = textColor,
+            fontSize = 35.sp
+        )
+    }
+}
+
+

Handle clicks with sound

+

Use Modifier.dpadClickable instead of Modifier.clickable because of this issue: +/b/268268856

+

Performance optimizations

+
    +
  • If you plan to use compose animations, check the performance during fast scrolling and consider throttling key events using the APIs explained here
  • +
  • Consider using dpadRecyclerView.setLayoutWhileScrollingEnabled(false) to discard layout requests during scroll events. +This will skip unnecessary layout requests triggered by some compose animations.
  • +
+

Check the sample on Github for more examples that include simple animations.

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/getting_started/index.html b/getting_started/index.html new file mode 100644 index 00000000..8ca03b15 --- /dev/null +++ b/getting_started/index.html @@ -0,0 +1,987 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Getting Started - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Getting started

+

Add the following dependency to your app's build.gradle:

+
implementation "com.rubensousa.dpadrecyclerview:dpadrecyclerview:1.3.0-rc02"
+
+// Recommended: To use Compose together with DpadRecyclerView
+implementation "com.rubensousa.dpadrecyclerview:dpadrecyclerview-compose:1.3.0-rc02"
+
+// Optional: Espresso test helpers for your instrumented tests:
+androidTestImplementation "com.rubensousa.dpadrecyclerview:dpadrecyclerview-testing:1.3.0-rc02"
+
+

Basic setup

+

Since DpadRecyclerView is a custom view that extends from RecyclerView, you just need to add it to your XML layout as any other view:

+
1
+2
+3
+4
+5
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" />
+
+
+

Warning

+

Don't set a LayoutManager because DpadRecyclerView already assigns one internally.

+
+

Follow the official RecyclerView guides to render Views on the screen +or use any RecyclerView library as you would for mobile apps.

+

You can also render Composables inside using the dpadrecyclerview-compose library.

+

Observe selection changes

+

You can observe selection changes using the following:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
recyclerView.addOnViewHolderSelectedListener(object : OnViewHolderSelectedListener {
+    override fun onViewHolderSelected(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+
+    override fun onViewHolderSelectedAndAligned(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+})
+
+

Observe focus changes

+

To react to focus changes, use this:

+
1
+2
+3
+4
+5
+6
+7
+8
recyclerView.addOnViewFocusedListener(object : OnViewFocusedListener {
+    override fun onViewFocused(
+        parent: RecyclerView.ViewHolder,
+        child: View,
+    ) {
+        // Child is now focused
+    }
+})
+
+

How to use with Compose

+

Check this page to see more some examples with Compose

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
@Composable
+fun ItemComposable(
+    item: Int, 
+    onClick: () -> Unit,
+    modifier: Modifier = Modifier,
+) {
+    var isFocused by remember { mutableStateOf(false) }
+    val backgroundColor = if (isFocused) Color.White else Color.Black
+    val textColor = if (isFocused) Color.Black else Color.White
+    Box(
+        modifier = modifier
+            .background(backgroundColor)
+            .onFocusChanged { focusState ->
+                isFocused = focusState.hasFocus
+            }
+             .focusable()
+            .dpadClickable {
+                onClick()
+            },
+        contentAlignment = Alignment.Center,
+    ) {
+        Text(
+            text = item.toString(),
+            color = textColor,
+            fontSize = 35.sp
+        )
+    }
+}
+
+

More customizations

+

Check the following recipes:

+
    +
  1. Layout: for defining the type of layout (linear or grid) or to enable infinite carousels
  2. +
  3. Spacing: add spacing between items
  4. +
  5. Alignment: align items to different regions of the screen
  6. +
  7. Focus: configure how focus is handled
  8. +
  9. Scrolling: configure the scrolling speed
  10. +
+

Sample

+

The sample on Github contains a complete example of +how to use this library.

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/img/center_alignment.png b/img/center_alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..88de17b8d277249fb792b69e8fa1af70230e672f GIT binary patch literal 16299 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 l|03^g|F=upK40K$N@kzT%6(g`1r`puYL literal 0 HcmV?d00001 diff --git a/img/circular_focus.png b/img/circular_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..b0da7fd8988c8461e0fe8d6dc68e08d19f502fe8 GIT binary patch literal 12158 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 UR|JqI?zw{eq#+|LnJ9dBC);3Buj!|-R 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 D0eltH literal 0 HcmV?d00001 diff --git a/img/max_pending_alignments.png b/img/max_pending_alignments.png new file mode 100644 index 0000000000000000000000000000000000000000..2c3db22d66a69b2715d4c1e10aaadb143f395995 GIT binary patch literal 17342 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 literal 0 HcmV?d00001 diff --git a/img/start_alignment.png b/img/start_alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..153980e278f7ac712b29816046144220305483b4 GIT binary patch literal 20368 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 literal 0 HcmV?d00001 diff --git a/img/start_alignment_padding.png b/img/start_alignment_padding.png new file mode 100644 index 0000000000000000000000000000000000000000..5eacb0728fd33f3c1329f95eba3ceb328ba9d8df GIT binary patch literal 31907 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
$ThCpL1}wp2 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 z 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 Pj4Sb0b8{#BzmxetI=J01 literal 0 HcmV?d00001 diff --git a/img/subposition_alignment.png b/img/subposition_alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..0a41d5ac70b952032adfcca89d22cebdc925f975 GIT binary patch literal 42459 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 00000000..4daf8793 --- /dev/null +++ b/index.html @@ -0,0 +1,908 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

DpadRecyclerView

+

A RecyclerView built for Android TV as a replacement +for Leanback's BaseGridView.

+

Proceed to Getting started to start adding DpadRecyclerView +to your application.

+

Why should you use this library?

+
    +
  1. Leanback hasn't received any significant update for years
  2. +
  3. Compose support for TV is still in its early stages
  4. +
  5. RecyclerView is stable and works well with Compose
  6. +
  7. You need to maintain an existing TV app and wish to introduce Compose in an incremental way
  8. +
  9. Contains useful Espresso testing helpers for your TV UI tests
  10. +
  11. More feature complete:
  12. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDpadRecyclerViewLeanbackCompose TV
Custom scrolling speeds
Edge alignment preference
Sub position selections
Fading edges
Alignment listener
Grids with uneven span sizes
Extra layout space
Prefetching upcoming items
Reverse layout
Testing library
Scrollbars
Drag and Drop
Infinite layout with loop
Smooth alignment changes
Discrete scrolling for text pages
Child focus observer
Circular and continuous focus
Throttling scroll events
Scrolling without animation
Scrolling in secondary directory
+

Background story for this library is available in my blog in case you're interested.

+

License

+
Copyright 2024 Rúben Sousa
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/migrating_leanback/index.html b/migrating_leanback/index.html new file mode 100644 index 00000000..da7fbafc --- /dev/null +++ b/migrating_leanback/index.html @@ -0,0 +1,1132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Migrating from Leanback - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+
+ + + + +

Migrating from Leanback

+

Interopability

+

DpadRecyclerView is also compatible with Leanback and can be used together in the same view hierarchy.

+

You can combine DpadRecyclerView with BaseGridView as follows:

+
    +
  1. +

    DpadRecyclerView as the parent RecyclerView and BaseGridView for the nested lists

    +
  2. +
  3. +

    BaseGridView as the parent RecyclerView and DpadRecyclerView for the nested lists

    +
  4. +
+

Themes

+

DpadRecyclerView does not require any theme like Theme.Leanback, so feel free to use any.

+

VerticalGridView and HorizontalGridView

+

Instead of using VerticalGridView or HorizontalGridView, use DpadRecyclerView and set the orientation either programmatically +with setOrientation or with plain XML:

+
1
+2
+3
+4
+5
<com.rubensousa.dpadrecyclerview.DpadRecyclerView 
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical|horizontal" 
+
+

Window Alignment

+

The window alignment APIs from BaseGridView can now be found in the ParentAlignment class.

+
+
+
+
1
+2
+3
+4
+5
recyclerView.windowAlignment = BaseGridView.WINDOW_ALIGN_NO_EDGE
+recyclerView.windowAlignmentOffset = 0
+recyclerView.windowAlignmentOffsetPercent = 100f
+recyclerView.windowAlignmentPreferKeyLineOverLowEdge = false
+recyclerView.windowAlignmentPreferKeyLineOverHighEdge = false
+
+
+
+
1
+2
+3
+4
+5
+6
+7
+8
recyclerView.setParentAlignment(
+    ParentAlignment(
+        edge = ParentAlignment.Edge.NONE,
+        offset = 0,
+        fraction = 1f,
+        preferKeylineOverEdge = false
+    )
+)
+
+
+
+
+

Edge alignment mapping:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
BaseGridViewDpadRecyclerView
BaseGridView.WINDOW_ALIGN_NO_EDGEParentAlignment.Edge.NONE
BaseGridView.WINDOW_ALIGN_LOW_EDGEParentAlignment.Edge.MIN
BaseGridView.WINDOW_ALIGN_MAX_EDGEParentAlignment.Edge.MAX
BaseGridView.WINDOW_ALIGN_BOTH_EDGEParentAlignment.Edge.MIN_MAX
+

Item Alignment

+

The child alignment APIs from BaseGridView can now be found in the ChildAlignment class.

+
+
+
+
1
+2
+3
recyclerView.itemAlignmentOffset = 0
+recyclerView.itemAlignmentOffsetPercent = 100f
+recyclerView.isItemAlignmentOffsetWithPadding = true
+
+
+
+
1
+2
+3
+4
+5
+6
+7
recyclerView.setChildAlignment(
+    ChildAlignment(
+        offset = 0,
+        fraction = 1f,
+        includePadding = true
+    )
+)
+
+
+
+
+

Selection changes

+
+
+
+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
recyclerView.addOnChildViewHolderSelectedListener(object : OnChildViewHolderSelectedListener() {
+    override fun onChildViewHolderSelected(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subposition: Int
+    ) {}
+
+    override fun onChildViewHolderSelectedAndPositioned(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subposition: Int
+    ) {}
+})
+
+
+
+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
recyclerView.addOnViewHolderSelectedListener(object : OnViewHolderSelectedListener {
+    override fun onViewHolderSelected(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+
+    override fun onViewHolderSelectedAndAligned(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+})
+
+
+
+
+

ItemAlignmentFacet or FacetProviderAdapter

+

This was typically used for configuring sub position alignment. Check this page for more information about sub position alignment.

+

If you were using FacetProviderAdapter for anything else, just write your own logic in the RecyclerView.Adapter and expose those events to the ViewHolders directly

+

Item spacing

+

There's no public API for item spacings at the layout level for DpadRecyclerView like setItemSpacing from BaseGridView.

+

However, we can use the standard RecyclerView.ItemDecoration API for this.

+

DpadRecyclerView ships with DpadLinearSpacingDecoration and DpadGridSpacingDecoration to achieve the same effect.

+

Please check the examples in the recipes at Spacing.

+

Fading edges

+

Support for fading edges is enabled with the default XML attribute fadingEdgeLength.

+
1
+2
+3
+4
+5
+6
<com.rubensousa.dpadrecyclerview.DpadRecyclerView 
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fadingEdgeLength="120dp"
+    android:orientation="vertical|horizontal" 
+
+

Alternatively, you can customise the fading edge with the following methods:

+
    +
  • setMinEdgeFadingLength
  • +
  • setMinEdgeFadingOffset
  • +
  • setMaxEdgeFadingLength
  • +
  • setMaxEdgeFadingOffset
  • +
  • setFadingEdgeLength
  • +
+

Presenters

+

These will still work out of the box with DpadRecyclerView since they're just a wrapper over RecyclerView.Adapter, + but feel free to use any other RecyclerView framework in case you want to get rid completely of the Leanback library.

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/alignment/index.html b/recipes/alignment/index.html new file mode 100644 index 00000000..c1703545 --- /dev/null +++ b/recipes/alignment/index.html @@ -0,0 +1,1014 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Alignment - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Alignment Recipes

+

Center alignment

+

Example of centering views in a vertical DpadRecyclerView:

+

Center alignment

+
+
+
+
1
+2
+3
+4
+5
+6
+7
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    app:dpadRecyclerViewChildAlignmentFraction="0.5"
+    app:dpadRecyclerViewParentAlignmentFraction="0.5" />
+
+
+
+
1
+2
+3
+4
+5
+6
recyclerView.setParentAlignment(
+    ParentAlignment(fraction = 0.5f)
+)
+recyclerView.setChildAlignment(
+    ChildAlignment(fraction = 0.5f)
+)
+
+
+
+
+

Start alignment

+

Example of aligning views in a horizontal DpadRecyclerView:

+

Start alignment

+
+
+
+
1
+2
+3
+4
+5
+6
+7
+8
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal"
+    app:dpadRecyclerViewChildAlignmentFraction="0"
+    app:dpadRecyclerViewParentAlignmentOffset="24dp"
+    app:dpadRecyclerViewParentAlignmentFraction="0" />
+
+
+
+
1
+2
+3
+4
+5
+6
+7
+8
+9
recyclerView.setParentAlignment(
+    ParentAlignment(
+        fraction = 0f, 
+        offset = 24.dp.toPx()
+    )
+)
+recyclerView.setChildAlignment(
+    ChildAlignment(fraction = 0f)
+)
+
+
+
+
+

If you want all items to be aligned to the keyline, even the ones at the start or end of the list, +you need to set an edge preference of ParentAlignment.Edge.NONE

+
+
+
+
1
+2
+3
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    <!-- Other attributes -->
+    app:dpadRecyclerViewParentAlignmentEdge="none" />
+
+
+
+
1
+2
+3
+4
+5
+6
+7
recyclerView.setParentAlignment(
+    ParentAlignment(
+        fraction = 0f, 
+        offset = 24.dp.toPx()
+        edge = ParentAlignment.Edge.NONE
+    )
+)
+
+
+
+
+

Including padding in child alignment

+

Start alignment with padding

+

In case you want to include padding for the alignment position, set the includePadding to true:

+
recyclerView.setChildAlignment(
+    ChildAlignment(fraction = 0f, includePadding = true)
+)
+
+

Padding will only be considered in the same orientation of the DpadRecyclerView and when the ratio is either 0f or 1f:

+
    +
  • start/top padding for horizontal/vertical when fraction is 0f
  • +
  • end/bottom padding for horizontal/vertical when fraction is 1f
  • +
+

Sub position alignment

+

You can define custom sub positions for every ViewHolder to align its children differently. +Each sub position alignment is essentially an extension of ChildAlignment.

+

Sub position alignment

+

In this example, we have 3 sub position alignments:

+
    +
  1. Sub position 0 is aligned to the parent keyline
  2. +
  3. Sub position 1 is aligned to the half of the view at sub position 0
  4. +
  5. Sub position 2 is aligned to the top of the view at sub position 1
  6. +
+

To achieve this, make your RecyclerView.ViewHolder implement DpadViewHolder and return the configuration in getSubPositionAlignments:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
class ExampleViewHolder(
+    view: View
+) : RecyclerView.ViewHolder(view), DpadViewHolder {
+
+    private val alignments = ArrayList<SubPositionAlignment>()
+
+    init {
+        alignments.apply {
+            add(
+                SubPositionAlignment(
+                    fraction = 0f,
+                    alignmentViewId = R.id.firstView,
+                    focusViewId = R.id.firstView
+                )
+            )
+            add(
+                SubPositionAlignment(
+                    fraction = 0.5f,
+                    alignmentViewId = R.id.firstView,
+                    focusViewId = R.id.secondView
+                )
+            )
+            add(
+                SubPositionAlignment(
+                    fraction = 0f,
+                    alignmentViewId = R.id.secondView,
+                    focusViewId = R.id.thirdView
+                )
+            )
+        }
+    }
+
+    override fun getSubPositionAlignments(): List<SubPositionAlignment> {
+        return alignments
+    }
+
+}
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/dragdrop/index.html b/recipes/dragdrop/index.html new file mode 100644 index 00000000..661c3c5f --- /dev/null +++ b/recipes/dragdrop/index.html @@ -0,0 +1,855 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Drag and drop - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Drag and Drop Recipe

+

Sometimes, users need to arrange the order of some collection. +The APIs mentioned here should assist you in developing such a feature.

+

Make your adapter mutable

+

DpadDragHelper requires a DpadDragHelper.DragAdapter<T> that exposes the mutable collection backing the adapter contents. +This allows DpadDragHelper to change the order of the elements for you automatically.

+

You just need to implement DpadDragHelper.DragAdapter<T> for this step:

+
1
+2
+3
+4
+5
+6
+7
+8
class ExampleAdapter(
+    private val adapterConfig: AdapterConfig
+) : RecyclerView.Adapter<RecyclerView.ViewHolder>(), 
+    DpadDragHelper.DragAdapter<Int> {
+
+    private val items = ArrayList<Int>()
+
+    override fun getMutableItems(): MutableList<Int> = items
+
+

Create a DpadDragHelper

+

Now that you have a DragAdapter setup, just create a DpadDragHelper like so:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
private val adapter = ExampleAdapter()
+private val dragHelper = DpadDragHelper(
+    adapter = dragAdapter,
+    callback = object : DpadDragHelper.DragCallback {
+        override fun onDragStarted(viewHolder: RecyclerView.ViewHolder) {
+            // ViewHolder is now being dragged
+        }
+        override fun onDragStopped() {
+            // Dragging was cancelled either by user or programmatically
+        }
+    }
+)
+
+

Then attach it to your DpadRecyclerView:

+
dragHelper.attachToRecyclerView(dpadRecyclerView)
+
+
+

Note

+

This only supports drag and drop for linear and grid layouts with the same number of spans.

+
+

Start and stop dragging

+

Now that DpadDragHelper is setup, you can start dragging by using:

+
dragHelper.startDrag(position = 0)
+
+

If the position passed in the method above is not currently selected, a selection will be triggered.

+

To cancel dragging for any reason, use:

+
dragHelper.stopDrag()
+
+
+

Note

+

Users can also stop dragging by pressing the following keys: KeyEvent.KEYCODE_DPAD_CENTER, +KeyEvent.KEYCODE_ENTER, KeyEvent.KEYCODE_BACK. These are customizable in the constructor of DpadDragHelper

+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/focus/index.html b/recipes/focus/index.html new file mode 100644 index 00000000..ba056918 --- /dev/null +++ b/recipes/focus/index.html @@ -0,0 +1,926 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Focus - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + +

Focus Recipes

+

Observing child focus

+

Use this to react to a child getting focus:

+
1
+2
+3
+4
+5
+6
+7
+8
recyclerView.addOnViewFocusedListener(object : OnViewFocusedListener {
+    override fun onViewFocused(
+        parent: RecyclerView.ViewHolder,
+        child: View,
+    ) {
+        // Child is now focused
+    }
+})
+
+
+

Note

+

If you set this in a vertical RecyclerView that contains multiple horizontal RecyclerViews, the parent will also receive this callback

+
+

Disabling focus changes

+

You might want to temporarily disable focus changes and prevent other views from being selected +by the user:

+
recyclerView.setFocusSearchDisabled(true)
+
+

This will block focus requests coming from DPAD events.

+

Grid circular focus

+

Circular focus

+

Dispatches focus back to the opposite span when it is currently at an edge.

+
recyclerView.setFocusableDirection(FocusableDirection.CIRCULAR)
+
+

Grid continuous focus

+

Continuous focus

+

Dispatches focus to the next or previous positions.

+
recyclerView.setFocusableDirection(FocusableDirection.CONTINUOUS)
+
+

Preventing focus losses

+

You might want your DpadRecyclerView to keep focus if the user presses a DPAD event that would trigger a focus change +to an outside view. This typically happens when the selection is at the first or last item.

+

Main direction

+

To prevent focus leaving from the main direction of scrolling, use setFocusOutAllowed:

+
recyclerView.setFocusOutAllowed(throughFront = true, throughBack = false)
+
+

Let's assume this RecyclerView has vertical orientation. +The example above would allow focusing out when the first item is selected and KEYCODE_DPAD_UP is pressed, +but it would prevent focus from leaving when the last item is selected and KEYCODE_DPAD_DOWN is pressed.

+

Secondary direction

+

To prevent focus leaving from the secondary direction of scrolling, use setFocusOutSideAllowed:

+
recyclerView.setFocusOutSideAllowed(throughFront = true, throughBack = false)
+
+

Let's again assume this RecyclerView has vertical orientation. +The example above would allow focusing out when focus is at the first span and KEYCODE_DPAD_LEFT is pressed, +but it would prevent focus from leaving when the last span is selected and KEYCODE_DPAD_RIGHT is pressed.

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/layout/index.html b/recipes/layout/index.html new file mode 100644 index 00000000..58fe4c26 --- /dev/null +++ b/recipes/layout/index.html @@ -0,0 +1,1008 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Layout Recipes

+

Rows

+

A Row is simply a DpadRecyclerView with RecyclerView.HORIZONTAL as its orientation. +Do the following either in XML or Kotlin:

+
+
+
+
1
+2
+3
+4
+5
<com.rubensousa.dpadrecyclerview.DpadRecyclerView 
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal" />
+
+
+
+
recyclerView.setOrientation(RecyclerView.HORIZONTAL)
+
+
+
+
+
+

Note

+

To center views vertically inside a horizontal DpadRecyclerView, +you can use the gravity attribute like so:

+
1
+2
+3
+4
+5
+6
<com.rubensousa.dpadrecyclerview.DpadRecyclerView 
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="260dp"
+    android:orientation="horizontal"
+    android:gravity="center" />
+
+
+

Columns

+

A Column is simply a DpadRecyclerView with RecyclerView.VERTICAL as its orientation. +Do the following either in XML or Kotlin:

+
+
+
+
1
+2
+3
+4
+5
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" />
+
+
+
+
recyclerView.setOrientation(RecyclerView.VERTICAL)
+
+
+
+
+

Grids

+

The API is similar to the one of GridLayoutManager from androidx.recyclerview:

+
+
+
+
1
+2
+3
+4
+5
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    app:spanCount="5" />
+
+
+
+
recyclerView.setSpanCount(5)
+
+
+
+
+

Different span sizes

+

To customise the size of each span, use DpadSpanSizeLookup.

+

This example would create a full size header for the item at the first position:

+
1
+2
+3
+4
+5
+6
+7
+8
+9
recyclerView.setSpanSizeLookup(object : DpadSpanSizeLookup() {
+    override fun getSpanSize(position: Int): Int {
+        return if (position == 0) {
+            recyclerView.getSpanCount()
+        } else {
+            1
+        }
+    }
+})
+
+

Looping adapter contents

+

You can enable infinite scrolling by using setLoopDirection to loop the adapter contents:

+
1
+2
+3
+4
+5
// This will loop when scrolling towards both the start and end edges
+recyclerView.setLoopDirection(DpadLoopDirection.MIN_MAX)
+
+// This will loop only when scrolling towards the end
+recyclerView.setLoopDirection(DpadLoopDirection.MAX)
+
+
+

Note

+

Looping is only supported when there's enough items to fill the viewport

+
+

Extra layout space

+

DpadRecyclerView won't layout any extra space by default, however, +you might want to create extra views in case you're aligning items to an edge.

+

The example below would create half a page of extra items at the start of the layout:

+
1
+2
+3
+4
+5
recyclerView.setExtraLayoutSpaceStrategy(object : ExtraLayoutSpaceStrategy {
+    override fun calculateStartExtraLayoutSpace(state: RecyclerView.State): Int {
+        return recyclerView.width / 2
+    }
+})
+
+

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/scrollbars/index.html b/recipes/scrollbars/index.html new file mode 100644 index 00000000..0765bb15 --- /dev/null +++ b/recipes/scrollbars/index.html @@ -0,0 +1,835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scrollbars - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Scrollbar Recipe

+

Scrollbars are composed of two parts:

+
    +
  1. Thumb: the main indicator for the current scroll position
  2. +
  3. Track: the background of the scrollbar
  4. +
+
+

Note

+

Unfortunately, scrollbars can only be defined in XML. You can create a style for re-usability.

+
+

Defining scrollbar appearance

+

Thumb example:

+
1
+2
+3
+4
+5
+6
+7
<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="4dp" />
+    <solid android:color="@color/white" />
+
+</shape>
+
+

Track example:

+
1
+2
+3
+4
+5
+6
<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="@color/black" />
+
+</shape>
+
+

DpadRecyclerView scrollbar configuration

+

To apply the above scrollbar appearance, place this in your DpadRecyclerView XML definition

+
1
+2
+3
+4
+5
+6
+7
+8
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:id="@+id/recyclerView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scrollbarSize="6dp"
+    android:scrollbarThumbVertical="@drawable/scrollbar_thumb"
+    android:scrollbarTrackVertical="@drawable/scrollbar_track"
+    android:scrollbars="vertical" />
+
+
+

Note

+

Replace "Vertical" with "Horizontal" for horizontal scrollbars

+
+

By default, the scrollbar is only shown after scrolling and then disappears. +You can force it to always appear by using this attribute:

+
1
+2
<com.rubensousa.dpadrecyclerview.DpadRecyclerView
+    android:scrollbarAlwaysDrawVerticalTrack="true" />
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/scrolling/index.html b/recipes/scrolling/index.html new file mode 100644 index 00000000..ef6f9dfb --- /dev/null +++ b/recipes/scrolling/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scrolling - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+
+ + + + +

Scrolling Recipes

+

Scrolling to specific positions

+

To scroll to a specific position, use the selection methods from DpadRecyclerView:

+
    +
  • setSelectedPosition - to scroll immediately to a given position
  • +
  • setSelectedPositionSmooth - to smooth scroll to a given position
  • +
+

If you're interested in triggering a callback once the selection is applied, you can do the following:

+
1
+2
+3
+4
+5
recyclerView.setSelectedPosition(0, object : ViewHolderTask() {
+    override fun execute(viewHolder: RecyclerView.ViewHolder) {
+        // ViewHolder was selected and aligned to its final location
+    }
+})
+
+

Disabling smooth scrolling

+

DpadRecyclerView allows disabling smooth scrolling on focus changes with:

+
recyclerView.setSmoothFocusChangesEnabled(false)
+
+

This will make DpadRecyclerView scroll immediately without any animation to the new focused view.

+

Changing smooth scrolling behavior

+

The code below changes the default interpolator used for smooth scrolling to a linear interpolator:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
val linearInterpolator = LinearInterpolator()
+recyclerView.setSmoothScrollBehavior(
+    object : DpadRecyclerView.SmoothScrollByBehavior {
+        override fun configSmoothScrollByDuration(dx: Int, dy: Int): Int {
+            return RecyclerView.UNDEFINED_DURATION
+        }
+
+        override fun configSmoothScrollByInterpolator(dx: Int, dy: Int): Interpolator {
+            return linearInterpolator
+        }
+    }
+)
+
+

To slow down the smooth scrolling speed, check setSmoothScrollSpeedFactor:

+
recyclerView.setSmoothScrollSpeedFactor(2f)
+
+

The code above will make smooth scrolling twice slower.

+

Limiting number of pending alignments

+

Sometimes you might want to prevent the user from scrolling past too many items. +You can specify the number of max pending alignments with: setSmoothScrollMaxPendingAlignments:

+
recyclerView.setSmoothScrollMaxPendingAlignments(2)
+
+

The code above translates to this behavior:

+

Max pending alignments

+

In the right scenario, there's just one next focusable view since the focused view still isn't aligned to the keyline.

+

Enabling layout during scrolling events

+

If you want to enable layout changes while DpadRecyclerView is still scrolling, use:

+
recyclerView.setLayoutWhileScrollingEnabled(true)
+
+

Long text scrolling

+

In some cases, you might need to show pages with text that should be scrollable (e.g terms & conditions).

+

For this use case, you can use DpadScroller:

+
val scroller = DpadScroller()
+scroller.attach(dpadRecyclerView)
+
+

DpadScroller will scroll the page for you on key event presses without any alignment so that the user can read the entire content

+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/recipes/spacing/index.html b/recipes/spacing/index.html new file mode 100644 index 00000000..72996c7d --- /dev/null +++ b/recipes/spacing/index.html @@ -0,0 +1,1079 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Spacing - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Spacing Recipes

+

Unlike BaseGridView, DpadRecyclerView does not have a setItemSpacing method. +However, you can achieve the same effect with one of the implementations of ItemDecoration provided by this library:

+
    +
  • DpadLinearSpacingDecoration: for columns and rows
  • +
  • DpadGridSpacingDecoration: for grids
  • +
+

Both of them support vertical and horizontal orientations. Please check the examples below.

+

Linear spacings

+

Column

+

image

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadLinearSpacingDecoration.create(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.vertical_item_spacing
+            ),
+            edgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.vertical_edge_spacing
+            ),
+            perpendicularEdgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.horizontal_edge_spacing
+            )
+        )
+    )
+}
+
+
+

Note

+
    +
  • If you don't specify a edgeSpacing, by default it will be the same as itemSpacing.
  • +
  • If you don't specify a perpendicularEdgeSpacing, by default it will be set to 0.
  • +
+
+

If you just need even spacings across all items in the layout direction, you can do the following:

+
1
+2
+3
+4
+5
+6
+7
+8
+9
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadLinearSpacingDecoration.create(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.vertical_item_spacing
+            )
+        )
+    )
+}
+
+

Row

+

image

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadLinearSpacingDecoration.create(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.horizontal_item_spacing
+            ),
+            edgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.horizontal_edge_spacing
+            ),
+            perpendicularEdgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.vertical_edge_spacing
+            )
+        )
+    )
+}
+
+
+

Note

+
    +
  • If you don't specify a edgeSpacing, by default it will be the same as itemSpacing.
  • +
  • If you don't specify a perpendicularEdgeSpacing, by default it will be set to 0.
  • +
+
+

If you just need even spacings across all items in the layout direction, you can do the following:

+
1
+2
+3
+4
+5
+6
+7
+8
+9
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadLinearSpacingDecoration.create(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.vertical_item_spacing
+            )
+        )
+    )
+}
+
+

Grid spacings

+

Vertical

+

image

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadGridSpacingDecoration.createVertical(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_horizontal_item_spacing
+            ),
+            perpendicularItemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_vertical_item_spacing
+            ),
+            edgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_vertical_edge_spacing
+            )
+        )
+    )
+}
+
+
+

Note

+
    +
  • If you don't specify a edgeSpacing or perpendicularItemSpacing, by default both will be the same as itemSpacing.
  • +
+
+

If you just want to apply the same spacing to all sides, you can do the following:

+
1
+2
+3
+4
+5
+6
+7
+8
+9
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadGridSpacingDecoration.create(
+            itemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_item_spacing
+            )
+        )
+    )
+}
+
+

Horizontal

+

image

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
fun setupSpacing(recyclerView: DpadRecyclerView) {
+    recyclerView.addItemDecoration(
+        DpadGridSpacingDecoration.createVertical(
+            horizontalItemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_horizontal_item_spacing
+            ),
+            verticalItemSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.grid_horizontal_item_spacing
+            ),
+            verticalEdgeSpacing = recyclerView.resources.getDimensionPixelOffset(
+                R.dimen.horizontal_edge_spacing
+            )
+        )
+    )
+}
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/selection/index.html b/selection/index.html new file mode 100644 index 00000000..b75f3c51 --- /dev/null +++ b/selection/index.html @@ -0,0 +1,848 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Focus and selection - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Focus and selection

+

It's important to distinguish between a selection event and a focus event.

+

You can change the selection state of a DpadRecyclerView while focus is in a completely separate view.

+

However, when focus changes to different ViewHolders inside DpadRecyclerView (due to DPAD navigation for example), this will automatically fire a selection event.

+

So, in short:

+
    +
  1. Selection changes can happen without focus requests
  2. +
  3. Focusing another view triggers a selection event
  4. +
+

Focus changes

+

To enable focus changes in your RecyclerView.ViewHolder, you need to set a child view as focusable. Otherwise, DpadRecyclerView won't find it +when the user presses the DPAD.

+

Do this either in XML or after onCreateViewHolder:

+
view.isFocusable = true
+view.isFocusableInTouchMode = true
+
+

To observe focus changes, simply use a OnFocusChangeListener:

+
1
+2
+3
+4
+5
+6
+7
view.setOnFocusChangeListener { _, hasFocus ->
+    if (hasFocus) {
+        // React to focus gain
+    } else {
+        // React to focus loss
+    }
+}
+
+

Selection changes

+

You can observe selection changes using the following:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
recyclerView.addOnViewHolderSelectedListener(object : OnViewHolderSelectedListener {
+    override fun onViewHolderSelected(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+
+    override fun onViewHolderSelectedAndAligned(
+        parent: RecyclerView,
+        child: RecyclerView.ViewHolder?,
+        position: Int,
+        subPosition: Int
+    ) {}
+})
+
+

If your ViewHolder implements the interface DpadViewHolder you can also get these events automatically from these callbacks:

+
1
+2
+3
+4
+5
+6
+7
+8
+9
class ExampleViewHolder(
+    view: View
+) : RecyclerView.ViewHolder(view), DpadViewHolder {
+
+    override fun onViewHolderSelected() {}
+
+    override fun onViewHolderDeselected() {}
+
+}
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..3f9075a0 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,83 @@ + + + + https://rubensousa.github.io/dpadrecyclerview/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/alignment/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/changelog/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/compose/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/getting_started/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/migrating_leanback/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/selection/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/testing/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/xml/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/alignment/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/dragdrop/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/focus/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/layout/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/scrollbars/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/scrolling/ + 2024-07-11 + daily + + + https://rubensousa.github.io/dpadrecyclerview/recipes/spacing/ + 2024-07-11 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..0c573cb7c6f12537afafedaca33f3574d4d804d9 GIT binary patch literal 339 zcmV-Z0j&NXiwFpSAdhAO|8r?{Wo=<_E_iKh0M*vbZi6rk2k?8J0&y>))uerh(%YV3 zJ5MHYL$naHIF$A67uv4sebOZ70 zPvyQ{HB|EjRaehtyDIWp0xoCg)p*kF zlEOJAP8|lOiJ`JC^;1_lQf34bQJ=KOcyu_cMlILeM*ydROuMbO59|7Iz1ifJYwfO0 z_Yf=|B7U_7oIf?{u5z)d8}9E+@Xm$-Ly`i%gnP1Lz%-1+D1~b=rTj8|aDtf7NMR4o zMmWPgLg+w$N|7^q)G3cMDd2>>+-ND>{0)#o%^No&%NxqSa1+6rNTW3Of%L@E&>l`S liF-s?NAkXd$TH=ECf^M{g8mow`H=s++aI4PsWYbw002)Yre**D literal 0 HcmV?d00001 diff --git a/testing/index.html b/testing/index.html new file mode 100644 index 00000000..a0dc0487 --- /dev/null +++ b/testing/index.html @@ -0,0 +1,869 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Testing - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

Testing

+

The module dpadrecyclerview-testing includes useful Espresso helpers for UI tests that require DPAD navigation.

+

Check the Espresso training guide if you're not familiar with this testing framework.

+

The official project sample over at Github also contains example UI tests here

+

Dispatching key events

+

KeyEvents provides some utility methods for easily pressing keys a certain amount of times.

+
KeyEvents.click()
+KeyEvents.back()
+KeyEvents.pressDown(times = 5)
+// 50 ms between each key press
+KeyEvents.pressUp(times = 5, delay = 50)
+
+

Speeding up rate of key events

+

DisableIdleTimeoutRule is a rule useful for removing any artificial delays produced automatically by UiAutomator when injecting key events into the test application.

+
1
+2
+3
+4
+5
+6
class UiTest() {
+
+    @get:Rule
+    val disableIdleTimeoutRule = DisableIdleTimeoutRule()
+
+}
+
+

ViewActions

+

DpadViewActions contains the following:

+
    +
  • getViewBounds: returns the bounds of a view in the coordinate-space of the root view of the window
  • +
  • getRelativeViewBounds: returns the bounds of a view in the coordinate-space of the parent view
  • +
  • clearFocus: clears the focus of a view if something else can take focus in its place
  • +
  • requestFocus: requests focus of a view
  • +
+

DpadRecyclerViewActions contains the following:

+
    +
  • scrollTo: scrolls to a specific itemView using KeyEvents
  • +
  • scrollToHolder: scrolls to a specific ViewHolder using KeyEvents
  • +
  • selectLastPosition: selects the last position of the adapter
  • +
  • selectPosition: selects a given position or position-subPosition pair
  • +
  • selectSubPosition: selects a given subPosition for the current selected position
  • +
  • getItemViewBounds: returns the bounds of the itemView of a ViewHolder at a given position in the coordinate-space of the root view of the window
  • +
  • waitForAdapterUpdate: loops the main thread until there's a given amount of adapter updates
  • +
  • waitForIdleScroll: loops the main thread until the DpadRecyclerView scroll state is not idle
  • +
  • execute: perform a generic action on the DpadRecyclerView
  • +
+

Example:

+
Espresso.onView(withId(R.id.recyclerView))
+    .perform(DpadRecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
+        hasDescendant(withText("Some title"))
+    ))
+
+

ViewAssertions

+

DpadRecyclerViewAssertions:

+
    +
  • isFocused: checks if a ViewHolder at a given position is focused
  • +
  • isSelected: checks if a ViewHolder at a given position or position-subPosition pair is selected
  • +
+

DpadViewAssertions:

+
    +
  • isFocused and isNotFocused : checks if a View is focused
  • +
  • hasFocus and doesNotHaveFocus: checks if a View or one of its descendants has focus
  • +
+

Example:

+
Espresso.onView(withId(R.id.recyclerView))
+    .assert(DpadRecyclerViewAssertions.isFocused(position = 5))
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/xml/index.html b/xml/index.html new file mode 100644 index 00000000..b1847a0c --- /dev/null +++ b/xml/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XML attributes - DpadRecyclerView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

XML Attributes

+

Alignment

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
<attr name="dpadRecyclerViewChildAlignmentOffset" format="dimension" />
+<attr name="dpadRecyclerViewChildAlignmentFraction" format="float" />
+<attr name="dpadRecyclerViewChildAlignmentFractionEnabled" format="boolean" />
+<attr name="dpadRecyclerViewParentAlignmentEdge" format="enum">
+    <enum name="none" value="0" />
+    <enum name="min" value="1" />
+    <enum name="max" value="2" />
+    <enum name="min_max" value="3" />
+</attr>
+<attr name="dpadRecyclerViewParentAlignmentOffset" format="dimension" />
+<attr name="dpadRecyclerViewParentAlignmentFraction" format="float" />
+<attr name="dpadRecyclerViewParentAlignmentFractionEnabled" format="boolean" />
+<attr name="dpadRecyclerViewParentAlignmentPreferKeylineOverEdge" format="boolean" />
+
+

Focus

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
<attr name="dpadRecyclerViewFocusOutFront" format="boolean" />
+<attr name="dpadRecyclerViewFocusOutBack" format="boolean" />
+<attr name="dpadRecyclerViewFocusOutSideFront" format="boolean" />
+<attr name="dpadRecyclerViewFocusOutSideBack" format="boolean" />
+<attr name="dpadRecyclerViewSmoothFocusChangesEnabled" format="boolean" />
+<attr name="dpadRecyclerViewFocusableDirection" format="enum">
+    <enum name="standard" value="0" />
+    <enum name="circular" value="1" />
+    <enum name="continuous" value="2" />
+</attr>
+
+

Layout

+

These default attributes from other ViewGroups are supported:

+
1
+2
+3
+4
<attr name="spanCount" />
+<attr name="reverseLayout" />
+<attr name="android:gravity" />
+<attr name="android:orientation" />
+
+

Styling

+

You can apply a default style in your theme:

+
1
+2
+3
+4
+5
+6
+7
<style name="Theme.App" parent="Theme.MaterialComponents.NoActionBar">
+    <item name="dpadRecyclerViewStyle">@style/DpadRecyclerViewStyle</item>
+</style>
+
+<style name="DpadRecyclerViewStyle">
+   <!-- Attributes here -->
+</style>
+
+

Or create individual styles:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
<style name="HorizontalStartDpadRecyclerView">
+    <item name="android:orientation">horizontal</item>
+    <item name="dpadRecyclerViewChildAlignmentOffset">@dimen/list_margin_start</item>
+    <item name="dpadRecyclerViewChildAlignmentFraction">0.0f</item>
+    <item name="dpadRecyclerViewParentAlignmentEdge">min_max</item>
+    <item name="dpadRecyclerViewParentAlignmentFraction">0.0f</item>
+</style>
+
+<style name="VerticalCenterDpadRecyclerView">
+    <item name="android:orientation">vertical</item>
+    <item name="dpadRecyclerViewChildAlignmentFraction">0.5f</item>
+    <item name="dpadRecyclerViewParentAlignmentEdge">min_max</item>
+    <item name="dpadRecyclerViewParentAlignmentFraction">0.5f</item>
+</style>
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file