| Id | ColorOnlyInformationConveyance |
| Summary | Information is conveyed exclusively through color differences |
| Severity | N/A |
| Category | Visual Accessibility |
| Affects | Resource files and Kotlin and Java files |
| Implementation | Manual testing - static analysis cannot infer the semantic meaning or intent of color usage, nor verify if alternative indicators are present. |
Interface relies solely on color changes (like red/green text) to communicate important state information or status, without additional visual indicators like icons, patterns, or background changes.
Creates barriers for users with color vision deficiencies who cannot distinguish between certain colors, potentially causing them to miss critical state changes, status updates, or feedback, leading to incomplete tasks or incorrect assumptions about system state.
<!-- Relying only on color to show status -->
<TextView
android:id="@+id/status_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Form validation failed"
android:textColor="@color/status_error" />
<!-- Missing: No icon or other visual indicator -->
<TextView
android:id="@+id/connection_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connected"
android:textColor="@color/status_success" />
class StatusHandler {
fun showErrorState(textView: TextView) {
// Only changing color to indicate error
textView.setTextColor(ContextCompat.getColor(context, R.color.status_error))
textView.text = "Error occurred"
// Missing: No icon, background change, or other visual indicator
}
fun updateConnectionStatus(indicator: View, isConnected: Boolean) {
// Color-only status indication
val color = if (isConnected) R.color.status_success else R.color.status_error
indicator.setBackgroundColor(ContextCompat.getColor(context, color))
// Missing: Shape, pattern, or text to convey status
}
}