Icon in Compose

Icons play a vital role in modern user interfaces, effectively conveying information and enhancing the overall user experience. In Jetpack Compose, Google's modern UI toolkit for Android app development, the Icon component provides a flexible and powerful way to incorporate icons into your applications. In this article, we will delve into the various properties of the Icon component, including tint and size, enabling you to create visually appealing and intuitive user interfaces.

Understanding the Icon Component:

The Icon component in Jetpack Compose allows you to display vector-based icons in your app. These icons are highly customizable and easily scaled and styled according to your design requirements. Let's explore the key properties of the Icon component.

  1. Tint: The tint property of the Icon the component enables you to apply colour to the icon. Specifying a colour value allows you to seamlessly integrate the icon with the surrounding UI elements, maintaining visual harmony. For instance, you can use tint = Color.Red to apply a red tint to the icon, or you can use tint = Color.Transparent to create a transparent effect.

Example 1: Applying Tint to an Icon

    imageVector = Icons.Filled.Favorite,
    contentDescription = "Favorite",
    tint = Color.Red,
    modifier = Modifier.size(48.dp)

Example 2: Applying a Dynamic Tint to an Icon

val selected = remember { mutableStateOf(false) }

    imageVector = Icons.Filled.Star,
    contentDescription = "Star",
    tint = if (selected.value) Color.Yellow else Color.Gray,
    modifier = Modifier.size(24.dp).clickable { selected.value = !selected.value }
  1. Size: The size property of the Icon component allows you to control the dimensions of the icon. You can specify the size using various units like dp (density-independent pixels), sp (scaled pixels), or em (relative to the font size). By adjusting the size, you can ensure the icon fits perfectly within your layout.

Example 1: Controlling Icon Size

    imageVector = Icons.Filled.ArrowBack,
    contentDescription = "Back",
    tint = Color.Black,
    modifier = Modifier.size(32.dp)

Example 2: Dynamic Icon Size

val iconSize = remember { mutableStateOf(24.dp) }

    imageVector = Icons.Filled.Search,
    contentDescription = "Search",
    tint = Color.Gray,
    modifier = Modifier.size(iconSize.value).clickable { iconSize.value += 8.dp }
  1. Content Description: The contentDescription property of the Icon component provides a text description of the icon. This description is crucial for accessibility, allowing users with visual impairments to understand the purpose or meaning of the icon. It is recommended to provide a meaningful and concise description to ensure inclusive app experiences.

Example: Icon with Content Description

    imageVector = Icons.Filled.Mic,
    contentDescription = "Microphone",
    tint = Color.Blue,
    modifier = Modifier.size(36.dp)
  1. Modifier: The modifier property of the Icon component lets you apply additional styling or layout modifications to the icon. You can use modifiers such as padding, clickable, or align to adjust the positioning or interaction behaviour of the icon within its parent layout.

Example: Icon with Modifier

    imageVector = Icons.Filled.Camera,
    contentDescription = "Camera",
    tint = Color.Magenta,
    modifier = Modifier.size(48.dp).padding(8.dp).clickable { /* Handle click event */ }


In this article, we explored the various properties of the Icon component in Jetpack Compose. By leveraging the tint property, you can apply custom colours to icons, seamlessly integrating them into your UI. Additionally, the size property allows for easy scaling of icons, ensuring a consistent and visually pleasing experience across different screen sizes. By utilizing the power of the Icon component and its properties, you can create stunning and user-friendly interfaces that elevate your Android applications to new heights.

Remember, icons are not mere decorative elements; they serve as powerful visual cues that enhance the usability and aesthetics of your app. So, embrace the versatility of the Icon component in Jetpack Compose and let your imagination run wild as you design delightful user experiences.

Spread the love
Scroll to Top