Composable Function

surface

A surface is a fundamental building block in Glimmer.

RevenueCat

RevenueCat

Add subscriptions to your apps in minutes

Ad Get started for free

surface

Android
@Composable
public fun Modifier.surface(
    focusable: Boolean = true,
    shape: Shape = GlimmerTheme.shapes.medium,
    color: Color = GlimmerTheme.colors.surface,
    contentColor: Color = calculateContentColor(color),
    depthEffect: SurfaceDepthEffect? = null,
    border: BorderStroke? = SurfaceDefaults.border(),
    interactionSource: MutableInteractionSource? = null,
): Modifier

A surface is a fundamental building block in Glimmer. A surface represents a distinct visual area or 'physical' boundary for components such as buttons and cards. A surface is responsible for: 1) Clipping: a surface clips its children to the shape specified by shape 2) Border: a surface draws an inner border to emphasize the boundary of the component. 3) Background: a surface has a background color of color. 4) Depth effect: a surface can have different DepthEffect shadows for different states, as specified by depthEffect. 5) Content color: a surface provides a contentColor for text and icons inside the surface. By default this is calculated from the provided background color. 6) Interaction states: when focused, a surface displays draws a wider border with a focused highlight on top. When pressed, a surface draws a pressed overlay. This happens for interactions emitted from interactionSource, whether this surface is focusable or not.

This surface is focusable by default - set focusable to false for un-interactive / decorative surfaces. For handling clicks, use the other surface overload with an onClick parameter.

Simple usage:

For custom gesture handling, add the gesture modifier after this surface, and provide a shared MutableInteractionSource to enable this surface to handle focus / press states. You should also pass false for focusable if that modifier already includes a focus target by default. For example, to create a toggleable surface:

Parameters

focusable whether this surface is focusable, true by default. Most surfaces should be focusable to allow navigation between surfaces in a screen. Unfocusable surfaces may be used for decorative only elements, such as surfaces used in a compound component with a separate focusable area.
shape the Shape used to clip this surface, and also used to draw the background and border
color the background Color for this surface
contentColor the Color for content inside this surface
depthEffect the SurfaceDepthEffect for this surface, representing the DepthEffect shadows rendered in different states.
border an optional inner border for this surface
interactionSource an optional hoisted MutableInteractionSource for observing and emitting Interactions for this surface. Note that if null is provided, interactions will still happen internally.

surface

Android
@Composable
public fun Modifier.surface(
    enabled: Boolean = true,
    shape: Shape = GlimmerTheme.shapes.medium,
    color: Color = GlimmerTheme.colors.surface,
    contentColor: Color = calculateContentColor(color),
    depthEffect: SurfaceDepthEffect? = null,
    border: BorderStroke? = SurfaceDefaults.border(),
    interactionSource: MutableInteractionSource? = null,
    onClick: () -> Unit,
): Modifier

A surface is a fundamental building block in Glimmer. A surface represents a distinct visual area or 'physical' boundary for components such as buttons and cards. A surface is responsible for: 1) Clipping: a surface clips its children to the shape specified by shape 2) Border: a surface draws an inner border to emphasize the boundary of the component. When focused, a surface draws a wider border with a focused highlight on top to indicate the focus state. 3) Background: a surface has a background color of color. 4) Depth effect: a surface can have different DepthEffect shadows for different states, as specified by depthEffect. 5) Content color: a surface provides a contentColor for text and icons inside the surface. By default this is calculated from the provided background color. 6) Interaction states: when focused, a surface displays draws a wider border with a focused highlight on top. When pressed, a surface draws a pressed overlay. This happens for interactions emitted from interactionSource, whether this surface is enabled or not.

This surface is focusable and handles clicks. For non-clickable surfaces, use the other overload of surface instead. For surfaces with custom gesture handling, refer to the sample and guidance on the other overload of surface.

Parameters

enabled whether this surface is enabled, true by default. When false, this surface will not respond to user input, and will not be focusable.
shape the Shape used to clip this surface, and also used to draw the background and border
color the background Color for this surface
contentColor the Color for content inside this surface
depthEffect the SurfaceDepthEffect for this surface, representing the DepthEffect shadows rendered in different states.
border an optional inner border for this surface
interactionSource an optional hoisted MutableInteractionSource for observing and emitting Interactions for this surface. Note that if null is provided, interactions will still happen internally.
onClick callback invoked when this surface is clicked