Build expandable descendant navigation, inspired by Google Inbox
As the highlight of this release, InboxRecyclerView
now supports nested scrolling! Manual interception of pull-to-collapse gestures for scrollable content is no longer needed as long as your app uses nested-scrolling aware widgets such as NestedScrollView
, RecyclerView
, etc.
If you aren’t a fan of using adapter IDs for expanding list items because it’s not 2020 anymore, InboxRecyclerView
now lets you supply any Parcelable
type using a custom InboxItemExpander. You can read more about it here: Custom expansion keys.
This release introduces PageCollapseEligibilityHapticFeedback
that can play haptic feedback during a pull-to-collapse gesture to indicate when the page can be released to collapse.
For apps that use a custom DimPainter
, this release unfortunately introduces a breaking change to the function signature of DimPainter#cancelAnimation()
.
Improved handling of size changes in both InboxRecyclerView
and ExpandablePageLayout
, especially when they're resized while expanding. This can happen if the soft keyboard is shown. (https://github.com/saket/InboxRecyclerView/commit/7654e48c8279d1e4190cd5d84f17ec02e11faac4, https://github.com/saket/InboxRecyclerView/commit/9d54032a9f6e733c9bfe91a454beaeded91b573d and https://github.com/saket/InboxRecyclerView/commit/c13948ecdfc8508b9310a0e5513baf10d73346b4).
Made InboxRecyclerView#attrs
constructor parameter optional so that it can be created from code.
Sample: Restored FAB animation by removing the use of the hidden AnimatedVectorDrawable#reverse()
function that no longer works on newer Android versions (https://github.com/saket/InboxRecyclerView/commit/6f0236394415f4603204964dfe8ab785e60a2a8a).
InboxRecyclerView
and its ExpandablePageLayout
no longer need to be of the same dimensions and share the same parent in the view hierarchy (Fixes #10).ExpandablePageLayouts
from its InboxRecyclerView
, essentially making it possible to use multiple expandable pages with the same list (Fixes #32).InboxRecyclerView#setExpandablePage()
is removed in favor of exposing the properties directly:
val page = findViewById<ExpandablePageLayout>(...)
inboxRecyclerView.expandablePage = page
// This is optional. The default value is ~48dp.
page.pullToCollapseThresholdDistance = dp(40)
No new changes since v1.0.0-rc2
.
Making this release to pave way for v2.0.0
which will bring in some breaking changes (more details here).
The highlight of this release is a fix for a funny bug that was making InboxRecyclerView unusable with battery saving enabled.
ExpandablePageLayout#parentToolbar
to private in favor of pushParentToolbarOnExpand()
.ExpandablePageLayout#pullToCollapseInterceptor
nullable so that it's easy to unregister an interceptor.InboxRecyclerView
open so that it can be subclassed.ExpandablePageLayout#parentToolbar
is set (b70c000).ExpandablePageLayout
is detached from the Window.This is a major release and I'm fairly confident that InboxRecyclerView
is now ready for stable consumption.
InboxRecyclerView
items to stay focused even their content had collapsedExpandablePageLayout
at a higher z-index than InboxRecyclerView
First release! I'm fairly satisfied with the APIs, but I'll keep the beta tag around for a few days to address feedback.
Here's the announcement blog post: http://saket.me/inboxrecyclerview/