Android: redesign Explore metric selector as ExposedDropdownMenuBox#253
Android: redesign Explore metric selector as ExposedDropdownMenuBox#253ujix wants to merge 1 commit into
Conversation
|
Two things here. First, a real bug: in the dropdown trigger row the Second, the bigger picture: this flips Explore's whole interaction model. iOS/macOS Explore is a grouped browse→detail list ( So: not adopting as-written. If the dropdown direction gets the nod and the arrow-icon bug is fixed, we'll revisit happily. Holding open — thanks for pushing on the Explore UX. (The chart tap/drag inspection you bundled in here is good, by the way — that part already landed via the Today HR chart in #254.) |
…picker Replaces the horizontal LazyRow of MetricChips with a full-width ExposedDropdownMenuBox. The trigger row shows the selected metric's accent dot, category overline, and name. The dropdown menu groups metrics by category with accent overline headers, a checkmark on the selected item, and HorizontalDividers between groups.
f02ca3e to
042e802
Compare
|
Thanks for the thorough review! Fixed both issues:
Branch updated and force-pushed. |
|
The arrow fix looks right ( |
|
Appreciate you keeping it open and framing it clearly as a direction call — makes sense. Here's our thinking on why the dropdown fits Android better than the horizontal browse: Screen real estate is the core difference. On macOS/iOS, the grouped browse works well because you have wide NavigationLink rows laid out vertically — the user can see all available metrics at a glance and tap directly into the one they want. On Android's narrower portrait screens, the horizontal chip/scroll row means options are hidden off-screen by default. A user who hasn't explored yet has no way of knowing how many metrics exist or what they're called without swiping through the entire list — it's effectively a horizontal scroll trap. Discovery is broken on small screens. With the browse model ported naively to Android, a metric like 'Respiratory Rate' sitting at position 8 in the row is invisible until the user has swiped past the first 7. The dropdown flips this: the full list is immediately visible the moment it opens, which is the same affordance a Precedent in Material Design. Android's own guidelines recommend A possible middle path (if it helps the cross-platform parity concern): the dropdown could be Android-only, keeping iOS/macOS on the grouped browse, since Compose Multiplatform already has the per-platform flexibility to diverge here. The data layer and chart rendering are identical — only the metric-selection UI adapts to the form factor. That way neither platform regresses. Happy to adjust the implementation in any direction you land on. |
|
This is a genuinely strong case, and the Android-only middle path is the part that resolves my concern: keeping iOS/macOS on the grouped browse while Android's selector adapts to the narrower form factor is exactly the kind of platform-appropriate divergence that's fine — the data and chart layers stay identical, only the picker changes. The portrait-discovery argument is fair too, and I'm inclined toward that — Android-only dropdown, other platforms unchanged. I'll keep it in the flagged-for-the-maintainer bucket since it's still a UX call, but with that recommendation attached now. Thanks for laying it out so clearly — and the arrow-icon fix already cleared the one actual bug. |
|
Adopted ✅ — shipped in v2.9.0 as an Android-only platform-appropriate Explore picker (the arrow-icon fix was in your diff). Thanks @ujix! Closing as adopted. |
What this PR does
Executive summary: Replaces the horizontal chip row on the Explore screen with a full
ExposedDropdownMenuBoxmetric picker and enables tap/drag chart inspection on the hero line chart.Details:
Explore screen
ExposedDropdownMenuBoxwith category headers, an accent dot per metric, a selected-item checkmark, and dividers between groups — replaces the horizontal scrolling chip row that clipped on narrow displaysselectionEnabled = trueon the heroLineChart— users can tap or drag to read exact values at any point on the trendValidation:
:app:assembleFullDebug,testFullDebugUnitTest, andtestDemoDebugUnitTestall green.Type of change
How it was tested
Android 16. Real Samsung device. WHOOP 4.0. Tested: dropdown opens/closes, all metric groups visible with correct accent dots, checkmark tracks selection, chart drag reads correct values, screen rotation.
Checklist
swift testinPackages/<name>)android/(./gradlew testFullDebugUnitTest)StrandDesigntokens — no hardcoded colors, fonts, or spacingdocs/CONTRIBUTING.mdStrand.xcodeproj/) or any secrets/keystoresRelated issues