Overview
Accessibility ensures your Android app is usable by everyone, including users with disabilities. This guide provides a comprehensive checklist for auditing and fixing accessibility issues in Jetpack Compose applications, with a focus on screen reader support (TalkBack) and inclusive design.Accessibility Checklist
1. Content Descriptions
Every visual element that conveys information must be accessible to screen readers. Check: DoImage and Icon composables have a meaningful contentDescription?
Best Practices for Content Descriptions
Best Practices for Content Descriptions
- Actionable elements: Describe the action, not the icon appearance
- Good: “Play music”, “Share article”
- Bad: “Triangle icon”, “Arrow pointing right”
- Decorative elements: Use
contentDescription = nullto hide from screen readers - Informative images: Describe the information conveyed, not the visual details
- Keep it concise: Screen readers already announce the element type (“button”, “image”)
2. Touch Target Size
All interactive elements must be large enough to tap comfortably. Standard: Minimum 48x48dp for all interactive elements (Material Design guideline).Check element size
Verify that clickable elements are at least 48x48dp using Layout Inspector or measuring tools.
Apply MinimumInteractiveComponentSize
Use
Modifier.minimumInteractiveComponentSize() for Material components:3. Color Contrast
Text and interactive elements must have sufficient contrast against their backgrounds. Standards:- WCAG AA: 4.5:1 for normal text, 3.0:1 for large text (18sp+) and icons
- WCAG AAA: 7:1 for normal text, 4.5:1 for large text
Tools for Checking Color Contrast
Tools for Checking Color Contrast
- Android Accessibility Scanner: On-device tool to check running apps
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
- Material Design Color Tool: https://material.io/resources/color/
- Chrome DevTools: Color Picker includes contrast ratio
- Use Material Theme colors - they’re designed with accessibility in mind
4. Focus & Semantics
Screen readers and keyboard navigation rely on proper focus order and semantic information.Focus Order
Ensure focus moves logically through your UI (typically top-to-bottom, start-to-end).Semantic Grouping
Group related elements so screen readers announce them as a single unit.State Descriptions
Describe custom states for screen reader users.Advanced Semantic Properties
Advanced Semantic Properties
5. Headings
Mark section titles as headings to allow screen reader users to navigate by structure.- Screen reader users can jump between sections using heading navigation
- Creates a logical document structure
- Improves navigation efficiency for long screens
TalkBack Optimization Tips
Test with TalkBack enabled
Enable TalkBack in Settings > Accessibility > TalkBack and navigate through your app.
Verify announcements are clear
Each element should announce:
- What it is (role: button, text, etc.)
- What it contains (label/content description)
- Current state (checked, selected, expanded, etc.)
Test navigation flow
Swipe right/left to move through elements. The order should be logical and match visual layout.
Common Accessibility Prompts
Use these prompts when working with AI agents on accessibility:- “Analyze the content description of this Image. Is it appropriate?”
- “Check if the touch target size of this button is at least 48dp.”
- “Does this custom toggle button report its ‘Checked’ state to TalkBack?”
- “Review this screen for accessibility issues and suggest fixes.”
- “Add semantic headings to this content layout.”
- “Improve the focus order for keyboard navigation in this form.”
