Programmatically Setting Text Color of TextView in Android

Nov 19, 2025 · Programming · 19 views · 7.8

Keywords: Android Development | TextView | Text Color Setting | Programmatic Setting | Color.parseColor | Resource Files

Abstract: This article provides a comprehensive guide on programmatically setting the text color of TextView in Android development. It covers the basic approach using Color.parseColor() method for direct hexadecimal color parsing, followed by detailed explanations of two different implementations for retrieving colors from resource files, targeting API 23 and above versus pre-API 23 versions. Through complete code examples and thorough explanations, developers can understand the appropriate scenarios and best practices for each method.

Overview of Programmatic TextView Text Color Setting

In Android application development, TextView is one of the most frequently used user interface components for displaying text content. Programmatically setting the text color of TextView is a common development requirement, particularly in scenarios where text color needs to change dynamically based on runtime conditions. Compared to static color setting in XML layout files, programmatic setting offers greater flexibility and dynamic control capabilities.

Using Color.parseColor Method

The most direct approach for programmatically setting text color involves using the Color.parseColor() method provided by the Android framework. This method accepts a string parameter representing a color, which can be in hexadecimal format, and returns the corresponding color integer value.

Basic usage example:

// Parse hexadecimal color code
int colorValue = Color.parseColor("#bdbdbd");

// Set TextView text color
TextView textView = findViewById(R.id.textView);
textView.setTextColor(colorValue);

Or simplified to a single line:

textView.setTextColor(Color.parseColor("#bdbdbd"));

This approach is suitable for scenarios requiring temporary setting of specific color values that don't need to be reused across multiple locations. The Color.parseColor() method supports various color formats, including:

Retrieving Colors from Resource Files

In practical project development, it's more recommended to define colors in resource files, enabling unified color management and theme adaptation. Android provides methods for retrieving colors from resource files, but developers must be aware of differences across API versions.

API 23 and Above

Starting from Android 6.0 (API level 23), it's recommended to use the ContextCompat.getColor() method for retrieving color resources:

// Define color resource
// In res/values/colors.xml file:
// <resources>
//   <color name="custom_gray">#bdbdbd</color>
// </resources>

// Usage in code
TextView textView = findViewById(R.id.textView);
textView.setTextColor(ContextCompat.getColor(context, R.color.custom_gray));

The ContextCompat.getColor() method automatically handles theme-related color resolution, ensuring correct color display across different themes.

Pre-API 23 Versions

For Android versions before API 23, the traditional getResources().getColor() method should be used:

TextView textView = findViewById(R.id.textView);
textView.setTextColor(getResources().getColor(R.color.custom_gray));

It's important to note that the getResources().getColor() method was deprecated in API 23 and will generate compilation warnings in newer Android development environments.

Method Comparison and Selection Guidelines

When choosing which method to use for setting TextView text color, consider the following factors:

Practical Implementation Example

Below is a complete Activity example demonstrating how to set TextView text color in different scenarios:

public class MainActivity extends AppCompatActivity {
    private TextView mTextView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mTextView = findViewById(R.id.textView);
        
        // Method 1: Using Color.parseColor
        mTextView.setTextColor(Color.parseColor("#bdbdbd"));
        
        // Method 2: Using resource files (recommended)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            mTextView.setTextColor(ContextCompat.getColor(this, R.color.custom_gray));
        } else {
            mTextView.setTextColor(getResources().getColor(R.color.custom_gray));
        }
    }
}

In actual development, it's recommended to choose the most appropriate method based on specific project requirements and target API levels. For new projects, using resource files in combination with ContextCompat.getColor() method is recommended to ensure optimal compatibility and maintainability.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.