mcpbeat

Android Edge To Edge

hoangnguyen0403/android-edge-to-edge

Migrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.

2k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
536
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/HoangNguyen0403/agent-skills-standard --skill android-edge-to-edge

What comes with it

6 572 bytes besides the instruction
evals/evals.json
references/inset-patterns.md

The instruction itself

11 sections, as written by the author

Edge-to-Edge Migration

Priority: P1 (HIGH)

Structured workflow for migrating a Compose app to edge-to-edge display.

Prerequisites

  • Project MUST use Jetpack Compose.
  • Project MUST target SDK 35+. If lower, increase compileSdk to 35.

Step 1: Plan

  • Locate all Activity classes. For each without enableEdgeToEdge(), plan to add it.
  • In each Activity, find all lists, FABs, and text fields that need inset handling.
  • If TextField/OutlinedTextField is present, plan IME inset handling.

Step 2: Enable edge-to-edge

  • Add enableEdgeToEdge() before setContent in every Activity.onCreate.
  • Add android:windowSoftInputMode="adjustResize" in AndroidManifest for Activities with soft keyboard.

Step 3: Apply insets

Choose ONE method per component to avoid double padding:

  • PREFERRED — Scaffold: Pass PaddingValues to content lambda.
  • Material 3 components: Use built-in inset handling (TopAppBar, NavigationBar, etc.).
  • Outside Scaffold: Use Modifier.safeDrawingPadding() or windowInsetsPadding.

See inset patterns for RIGHT/WRONG code examples.

Step 4: Handle IME

For Activities with soft keyboard:

  • Set adjustResize in manifest (NOT deprecated SOFT_INPUT_ADJUST_RESIZE).
  • Add imePadding() or fitInside(WindowInsetsRulers.Ime.current) to content container.
  • Place imePadding BEFORE verticalScroll().

See inset patterns for IME-specific RIGHT/WRONG patterns.

Step 5: Lists and FABs

  • Apply inset padding to contentPadding of LazyColumn/LazyRow, NOT as Modifier.padding() on parent.
  • FABs inside Scaffold are handled automatically. Outside Scaffold, use safeDrawingPadding().

Verification

  • [ ] Every Activity calls enableEdgeToEdge().
  • [ ] adjustResize set in AndroidManifest for keyboard Activities.
  • [ ] Text fields have IME inset handling.
  • [ ] List items scroll behind system bars via contentPadding.
  • [ ] ./gradlew build succeeds.

Anti-Patterns

  • No double inset padding: Never combine contentWindowInsets = WindowInsets.safeDrawing with imePadding() on the same content — causes double padding when IME opens.
  • No parent padding on lists: Apply insets to contentPadding, not parent Modifier.padding() — parent padding clips scrolling content.
  • No SOFT_INPUT_ADJUST_RESIZE: Deprecated. Use manifest adjustResize attribute.

References

  • Inset Patterns (RIGHT/WRONG)

How to use it

Copy the folder

Take hoangnguyen0403/android-edge-to-edge from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.