[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7559":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},7559,"InboxRecyclerView","saket\u002FInboxRecyclerView","saket","Build expandable descendant navigation, inspired by Google Inbox","",null,"Kotlin",1963,116,30,1,0,54.2,"Apache License 2.0",false,"master",true,[23,24,25],"gesture","inbox","recyclerview","2026-06-12 04:00:34","[![](https:\u002F\u002Fgithub.com\u002Fsaket\u002FInboxRecyclerView\u002Fblob\u002Fmaster\u002Fdocs\u002Fimages\u002Fstatic_thumbnail.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLY9Ajk3MUE7UAT4rn9LO-jSPfkPm5ewrQ)\n\n`InboxRecyclerView` is a library for building expandable descendant navigation inspired by [Google Inbox](http:\u002F\u002Fandroidniceties.tumblr.com\u002Fpost\u002F100872004063\u002Finbox-by-gmail-google-play-link) and [Reply](https:\u002F\u002Fmaterial.io\u002Fdesign\u002Fmaterial-studies\u002Freply.html), and is an easy drop-in into existing projects. You can take a look at the [sample app](https:\u002F\u002Fgithub.com\u002Fsaket\u002FInboxRecyclerView\u002Ftree\u002Fmaster\u002Fsample) for best practices or [download its APK](https:\u002F\u002Fgithub.com\u002Fsaket\u002FInboxRecyclerView\u002Freleases) for trying it out on your phone. If you're interested in learning how it was created, [here's an in-depth blog post](https:\u002F\u002Fsaket.me\u002Finbox-recyclerview).\n\n```groovy\nimplementation 'me.saket:inboxrecyclerview:3.0.0'\n```\n\n### Usage\n\n**Layout**\n\n```xml\n\u003Cme.saket.inboxrecyclerview.InboxRecyclerView\n  android:layout_width=\"match_parent\"\n  android:layout_height=\"match_parent\" \u002F>\n\n\u003Cme.saket.inboxrecyclerview.page.ExpandablePageLayout\n  android:layout_width=\"match_parent\"\n  android:layout_height=\"match_parent\"\n  android:background=\"@color\u002Fsame_as_your_list_items\">\n\n  \u003C!--\n    Your expandable content will live here. Make sure that\n    your page has a higher z-index than the list by giving\n    it a higher view position or a higher elevation.\n  -->\n\u003C\u002Fme.saket.inboxrecyclerview.page.ExpandablePageLayout>\n```\n\n**Expanding content**\n\n```kotlin\nrecyclerView.itemExpandAnimator = ItemExpandAnimator.scale() \u002F\u002F or split() \u002F none()\nrecyclerView.dimPainter = DimPainter.listAndPage(Color.WHITE, alpha = 0.65f)\n\nrecyclerView.expandablePage = findViewById(...).also {\n  it.pushParentToolbarOnExpand(toolbar)\n  it.addOnPullListener(PageCollapseEligibilityHapticFeedback(it))\n}\n\nrecyclerViewAdapter.onItemClick = { clickedItem ->\n  \u002F\u002F Load or update your content inside the page here.\n  recyclerView.expandItem(clickedItem.adapterId)\n}\n```\n\n### How do I…\n\n- [customize item expand animations?](docs\u002Fitem_animators.md)\n- [control the pull-to-collapse gesture?](docs\u002Fpull_to_collapse.md)\n- [change background dimming?](docs\u002Fbackground_dim.md)\n- [listen to state changes?](docs\u002Fpage_callbacks.md)\n- [expand items without using `Long` based adapter IDs?](https:\u002F\u002Fgithub.com\u002Fsaket\u002FInboxRecyclerView\u002Fwiki\u002FCustom-expansion-keys)\n\n### Pull collapsible activities\n\nTo maintain consistency across your whole app, a `PullCollapsibleActivity` is also included that brings the same animations and gesture to activities with little effort.\n\nStep 1. Extend `PullCollapsibleActivity`.\n\nStep 2. Add these attributes to the activity’s theme:\n\n```xml\n\u003Citem name=\"android:windowIsTranslucent\">true\u003C\u002Fitem>\n\u003Citem name=\"android:colorBackgroundCacheHint\">@null\u003C\u002Fitem>\n```\n\n### License\n```\nCopyright 2018 Saket Narayan.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","InboxRecyclerView 是一个用于构建可扩展后代导航的库，灵感来源于 Google Inbox 和 Reply。该项目使用 Kotlin 语言编写，支持自定义项展开动画、手势控制下拉折叠以及背景变暗效果调整等核心功能。它特别适合需要实现类似Google Inbox中邮件列表展开收起交互效果的应用场景，如信息流应用、邮件客户端或任何需要在列表项上展示更多详情内容的界面设计。此外，项目还提供了一个PullCollapsibleActivity类，可以轻松地将相同的动画和手势应用于整个应用程序中的活动，增强了用户体验的一致性。",2,"2026-06-11 03:13:03","top_language"]