Skip to content

Most apps unusable in Android 15 upwards due to edge-to-edge mode #848

@adrianmay

Description

@adrianmay

Edge-to-edge mode is a new Android feature that adds transparency to the system status bar and navigation buttons by drawing apps behind them. But if the app has any buttons of its own near the top or bottom edges then the system controls eat their clicks. This can be suppressed in Android 15 with R.attr#windowOptOutEdgeToEdgeEnforcement but that will be ignored in Android 16. Instead we're supposed to ask the system how tall these overlaps are using getInsets and avoid putting controls there. Strange but true.

Here's the evidence:

https://developer.android.com/develop/ui/views/layout/edge-to-edge#java
https://developer.android.com/about/versions/16/behavior-changes-16

This is causing show-stopping dysfunction in most apps based on reflex/obelisk, including ours:

https://gitlab.com/tahoe-lafs/bala-lafs-mobile/-/issues/2

We're not sure how to apply either of the solutions linked above within the reflex ecosystem.

We also filed a ticket in obelisk because we're not sure which repo needs fixing:

obsidiansystems/obelisk#1128

This would seem like a very high priority issue because it's hard to imagine an app which doesn't have controls near either the top or bottom edge, and all these apps are rendered unusable on Android 15 or higher.

I suggest that reflex/obelisk should sidestep this lunacy altogether by always using getInsets and putting empty space there. Any other solution would require painstaking work from individual app developers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions