Problems
Landscape media canvas
The full-screen photo viewer applies fixed vertical padding before fitting media. In landscape this unnecessarily shrinks a 3:2 photo to a narrow centered rectangle and creates very large side gaps, while previous/next controls remain attached to the outer screen edges.
A live Android UI hierarchy confirmed that the media canvas was reduced substantially even though the top controls already render as an overlay.
Portrait header
The source selector is nested inside the weighted title column of a single horizontal header row. In portrait, RAW/JPEG choices are squeezed until their labels wrap vertically. A live Android UI hierarchy measured the header at more than half the screen height, with action buttons vertically centered far below the status bar.
Expected behavior
- Let photos and native video use the full viewer canvas behind overlay chrome.
- Preserve
ContentScale.Fit at the default zoom so the complete photo remains visible.
- Keep status-bar-safe controls without reserving duplicate fixed media padding.
- Use a fixed, bounded top action row in portrait and landscape.
- Render RAW/JPEG source choices in a separate bounded, horizontally scrollable or equivalently compact non-wrapping control.
- Keep source labels single-line with ellipsis and preserve accessible touch targets.
- Keep zoom, pan, full-quality loading, RAW/JPEG switching, editing, keyboard navigation, and portrait behavior intact.
- Ensure previous/next controls remain reachable and visually associated with the media.
- Add deterministic layout/semantics coverage for portrait and landscape sizes.
Problems
Landscape media canvas
The full-screen photo viewer applies fixed vertical padding before fitting media. In landscape this unnecessarily shrinks a 3:2 photo to a narrow centered rectangle and creates very large side gaps, while previous/next controls remain attached to the outer screen edges.
A live Android UI hierarchy confirmed that the media canvas was reduced substantially even though the top controls already render as an overlay.
Portrait header
The source selector is nested inside the weighted title column of a single horizontal header row. In portrait, RAW/JPEG choices are squeezed until their labels wrap vertically. A live Android UI hierarchy measured the header at more than half the screen height, with action buttons vertically centered far below the status bar.
Expected behavior
ContentScale.Fitat the default zoom so the complete photo remains visible.