[NTP Theme] Add Chrome Colors bottom sheet This CL introduces the Chrome Colors bottom sheet, featuring a RecyclerView designed with these key requirements: 1. Dynamic Width: The color grid's width precisely matches the switch above it, up to a maximum of 504dp. 2. Adaptive Columns: The grid displays the maximum fit columns, automatically adjusting on device rotation. 3. Horizontal Centering: The entire color palette block (max 504dp width) remains perfectly centered horizontally, regardless of column count. 4. Consistent Spacing: A uniform 24dp gap is maintained between all color palette (horizontal/vertical). The first and last columns have a 12dp margin relative to the switch's width or the 504dp maximum. Technical & Spacing Details: The grid's maximum width is capped at 504dp. This value is derived from the space needed to display a full row of 7 items, based on the component dimensions: (7 items × 48dp) + (6 gaps × 24dp) + (2 outer margins × 12dp) = 504dp The spacing model creates a uniform 24dp gap between all color palettes, with a 12dp margin on the outside edges of the grid. The change of the UI is shown in the following doc: https://docs.google.com/document/d/1bMRVyyqOd0-cAmyTbL9IhKNU9uSvDdpdCngSzSXIHnk/edit?tab=t.0#bookmark=id.gse8zunxqjiy Based on the log, the customized RecyclerView's `onMeasure` method is called once when the bottom sheet is initially opened, and it's not called during scrolling. When the device orientation changes, `onMeasure` is called exactly five times. However, by using mLastRecyclerViewWidth, the maxSpanCount is calculated just once after the orientation change, and scrolling does not trigger subsequent `onMeasure` calls. Here are the logs demonstrating this. https://drive.google.com/file/d/1D5OAkhjH5hJ2GvXvDUQXK7MCmvOCGdGe/view?usp=sharing&resourcekey=0-tv_Rhdy_T6ZkHkcfFFbtkw Skip-Translation-Screenshots-Check: True Bug: 421436204 Change-Id: I9e206282517c94ae394e9a7e063fd03f3143b0dc Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6793165 Commit-Queue: Yanling Hu <yanlinghu@google.com> Reviewed-by: Xi Han <hanxi@chromium.org> Reviewed-by: Xinyi Ji <xinyiji@chromium.org> Cr-Commit-Position: refs/heads/main@{#1501027}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.