Repository navigation
Update build to Gradle 9 / AGP 9, add CI with tests, Dependabot and max lines limit - #11
Merged
Merged
Conversation
simonebortolin
force-pushed
the
ccr-32b0b815-02w9qq
branch
7 times, most recently
from
October 23, 2026 23:19
074cda1 to
0e74848
Compare
Build - Gradle wrapper 9.8.2, AGP 9.4.0, version catalog, Java 17, compileSdk/targetSdk 37, namespace in build.gradle - Library depends only on RecyclerView 1.4.0 (api), published with maven-publish instead of the dead Bintray plugin; jitpack.yml for JDK 17 - MIN_SDK=21 shared by library and sample app: the sample uses only framework widgets and RecyclerView (AppCompat 1.8 and Material 1.14 require minSdk 23), with if/else on non-final R ids (hees-k fork) and an exported launcher activity (idindevelop fork) CI/CD - Resolve Version -> Test -> Build -> Tag & Release, each stage needs the previous one - Robolectric unit tests on SDK 23 and 37 with JDK 21, JUnit results published as a check run per SDK - Library AAR and sample APK, released with checksums and provenance - Dependabot for Gradle and GitHub Actions Tests - CacheHelperTest moved from instrumentation to JVM unit tests - FlowLayoutManagerTest for visible lines, items per line and alignment Cleanup - Remove FlowLayoutManager.zip, gradlew.bat, the nested wrapper in the library module, empty proguard files, boilerplate tests and unused resources; move screenshots to art/; update README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016qFN7YvhK7tdTyvUb24JH5
maxLines(int), removeMaxLinesLimit() and FlowLayoutManager(int maxLines), based on the davidleen fork. Unlike the fork, scrolling and predictive layout do not add lines past the limit either, and the view past the limit is recycled. - Tests for the layout, scrolling past the limit and removing it - Max lines demo in the sample app Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016qFN7YvhK7tdTyvUb24JH5
simonebortolin
force-pushed
the
ccr-32b0b815-02w9qq
branch
from
October 23, 2026 23:24
0e74848 to
03e8d92
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings FlowLayoutManager in line with MaterialSeekArc (toolchain, CI/CD, Dependabot), cleans the repository and merges the useful changes from the forks.
minSdkstays at 21, as low as the dependencies allow.Two commits: the build/CI/tests/cleanup update, and the max lines limit feature.
Build & dependencies
gradle/libs.versions.toml), Java 17, compileSdk/targetSdk 37, namespace inbuild.gradleapi, it is part of the public API); published withmaven-publishinstead of the dead Bintray plugin;jitpack.ymlfor JDK 17MIN_SDK=21ingradle.properties, shared by library and sample app. The sample uses only framework widgets + RecyclerView (AppCompat 1.8 and Material 1.14 require minSdk 23), so a dependency update that needs a higher minSdk fails the build instead of raising it silentlyVERSION_NAME1.9.0CI/CD (
.github/workflows/ci.yml)Stages, each one needs the previous: Resolve Version → Test → Build → Tag & Release (same structure as npoi).
--add-opensforjava.ioandjdk.internal.access, needed by Robolectric on recent SDKs); JUnit results uploaded asjunit-sdk<N>artifactsjunit-sdk<N>artifacts withdorny/test-reporteras one "Unit Tests Result (SDK N)" check run per SDKpublishToMavenLocalVERSION_NAME, GitHub Release with AAR, APK, SHA256SUMS and build provenance attestationTests
CacheHelperTest(13 tests) moved from instrumentation (never run, it needed an emulator) to JVM unit testsFlowLayoutManagerTest: visible lines, items per line, right alignment, max lines (layout, scrolling past the limit, removing the limit)Max lines limit
maxLines(int),removeMaxLinesLimit()andFlowLayoutManager(int maxLines), based on the davidleen fork. Unlike the fork, scrolling and predictive layout do not add lines past the limit either, and the view past the limit is recycled. The sample app has a "Max lines" demo.Forks
if/elseinstead ofswitchon non-final R idsandroid:exported="true"on the launcher activityCleanup
Removed
FlowLayoutManager.zip,gradlew.bat, the nested Gradle wrapper in the library module, empty proguard files, boilerplate tests and unused resources; screenshots moved toart/; README updated (badges, installation, max lines, build, credits).Known, not changed here
With LEFT/RIGHT alignment
computeVerticalScroll*(scrollbar metrics) are item-count based, soRecyclerView.canScrollVertically()can report scrollable at the end of the list; the tests useFlowLayoutManager.canScrollVertically(direction). Pre-existing, can be a follow-up.Test plan
CacheHelperTestrun locally with plain JUnit and pure-Java stand-ins forPoint/SparseArray: 13/13 pass🤖 Generated with Claude Code
https://claude.ai/code/session_016qFN7YvhK7tdTyvUb24JH5