Color-Only Information Conveyance

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.

Symptom

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.

Rationale

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.

Examples

XML Layout Example

<!-- 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" />

Kotlin Code Example

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
    }
}

GitHub issues under this tag