Google is committed to advancing racial equity for Black communities. See how.

PointerInputModifier

interface PointerInputModifier : Modifier.Element
androidx.compose.ui.input.pointer.PointerInputModifier

A Modifier.Element that can interact with pointer input.

Summary

Inherited functions
Inherited extension functions
From androidx.compose.foundation.layout
Modifier
Modifier.absoluteOffset(x: Dp = 0.dp, y: Dp = 0.dp)

Offset the content by (x dp, y dp).

Modifier
Modifier.absoluteOffsetPx(x: State<Float> = mutableStateOf(0f), y: State<Float> = mutableStateOf(0f))

Offset the content by (x px, y px).

Modifier
Modifier.absolutePadding(left: Dp = 0.dp, top: Dp = 0.dp, right: Dp = 0.dp, bottom: Dp = 0.dp)

Apply additional space along each edge of the content in Dp: left, top, right and bottom.

Modifier
Modifier.aspectRatio(@FloatRange(0.0, 3.4E38, false) ratio: Float)

Attempts to size the content to match a specified aspect ratio by trying to match one of the incoming constraints in the following order: Constraints.maxWidth, Constraints.maxHeight, Constraints.minWidth, Constraints.minHeight.

Modifier
Modifier.defaultMinSizeConstraints(minWidth: Dp = Dp.Unspecified, minHeight: Dp = Dp.Unspecified)

Constrain the size of the wrapped layout only when it would be otherwise unconstrained: the minWidth and minHeight constraints are only applied when the incoming corresponding constraint is 0.

Modifier
Modifier.fillMaxHeight(@FloatRange(0.0, 1.0) fraction: Float = 1f)

Have the content fill (possibly only partially) the Constraints.maxHeight of the incoming measurement constraints, by setting the minimum height and the maximum height to be equal to the maximum height multiplied by fraction.

Modifier
Modifier.fillMaxSize(@FloatRange(0.0, 1.0) fraction: Float = 1f)

Have the content fill (possibly only partially) the Constraints.maxWidth and Constraints.maxHeight of the incoming measurement constraints, by setting the minimum width and the maximum width to be equal to the maximum width multiplied by fraction, as well as the minimum height and the maximum height to be equal to the maximum height multiplied by fraction.

Modifier
Modifier.fillMaxWidth(@FloatRange(0.0, 1.0) fraction: Float = 1f)

Have the content fill (possibly only partially) the Constraints.maxWidth of the incoming measurement constraints, by setting the minimum width and the maximum width to be equal to the maximum width multiplied by fraction.

Modifier
Modifier.height(height: Dp)

Declare the height of the content to be exactly heightdp.

Modifier
Modifier.heightIn(min: Dp = Dp.Unspecified, max: Dp = Dp.Unspecified)

Constrain the height of the content to be between mindp and maxdp.

Modifier
Modifier.offset(x: Dp = 0.dp, y: Dp = 0.dp)

Offset the content by (x dp, y dp).

Modifier
Modifier.offsetPx(x: State<Float> = mutableStateOf(0f), y: State<Float> = mutableStateOf(0f))

Offset the content by (x px, y px).

Modifier
Modifier.padding(start: Dp = 0.dp, top: Dp = 0.dp, end: Dp = 0.dp, bottom: Dp = 0.dp)

Apply additional space along each edge of the content in Dp: start, top, end and bottom.

Modifier
Modifier.padding(horizontal: Dp = 0.dp, vertical: Dp = 0.dp)

Apply horizontal dp space along the left and right edges of the content, and vertical dp space along the top and bottom edges.

Modifier

Apply all dp of additional space along each edge of the content, left, top, right and bottom.

Modifier

Apply PaddingValues to the component as additional space along each edge of the content's left, top, right and bottom.

Modifier

Declare the preferred height of the content to be the same as the min or max intrinsic height of the content.

Modifier

Declare the preferred height of the content to be exactly heightdp.

Modifier
Modifier.preferredHeightIn(min: Dp = Dp.Unspecified, max: Dp = Dp.Unspecified)

Constrain the height of the content to be between mindp and maxdp as permitted by the incoming measurement Constraints.

Modifier

Declare the preferred size of the content to be exactly sizedp square.

Modifier
Modifier.preferredSize(width: Dp, height: Dp)

Declare the preferred size of the content to be exactly widthdp by heightdp.

Modifier

Constrain the size of the content to be within constraints as permitted by the incoming measurement Constraints.

Modifier
Modifier.preferredSizeIn(minWidth: Dp = Dp.Unspecified, minHeight: Dp = Dp.Unspecified, maxWidth: Dp = Dp.Unspecified, maxHeight: Dp = Dp.Unspecified)

Constrain the width of the content to be between minWidthdp and maxWidthdp and the height of the content to be between minHeight and maxHeight as permitted by the incoming measurement Constraints.

Modifier

Declare the preferred width of the content to be the same as the min or max intrinsic width of the content.

Modifier

Declare the preferred width of the content to be exactly widthdp.

Modifier
Modifier.preferredWidthIn(min: Dp = Dp.Unspecified, max: Dp = Dp.Unspecified)

Constrain the width of the content to be between mindp and maxdp as permitted by the incoming measurement Constraints.

Modifier
Modifier.relativePaddingFrom(alignmentLine: AlignmentLine, before: Dp = Dp.Unspecified, after: Dp = Dp.Unspecified)

A Modifier that can add padding to position the content according to specified distances from its bounds to an alignment line.

Modifier
Modifier.size(size: Dp)

Declare the size of the content to be exactly sizedp width and height.

Modifier
Modifier.size(width: Dp, height: Dp)

Declare the size of the content to be exactly widthdp and heightdp.

Modifier

Constrain the size of the content to be within constraints.

Modifier
Modifier.sizeIn(minWidth: Dp = Dp.Unspecified, minHeight: Dp = Dp.Unspecified, maxWidth: Dp = Dp.Unspecified, maxHeight: Dp = Dp.Unspecified)

Constrain the width of the content to be between minWidthdp and maxWidthdp, and the height of the content to be between minHeightdp and maxHeightdp.

Modifier
Modifier.width(width: Dp)

Declare the width of the content to be exactly widthdp.

Modifier
Modifier.widthIn(min: Dp = Dp.Unspecified, max: Dp = Dp.Unspecified)

Constrain the width of the content to be between mindp and maxdp.

Modifier
Modifier.wrapContentHeight(align: Alignment.Vertical = Alignment.CenterVertically)

Allow the content to measure at its desired height without regard for the incoming measurement minimum height constraint.

Modifier
Modifier.wrapContentSize(align: Alignment = Alignment.Center)

Allow the content to measure at its desired size without regard for the incoming measurement minimum width or minimum height constraints.

Modifier
Modifier.wrapContentWidth(align: Alignment.Horizontal = Alignment.CenterHorizontally)

Allow the content to measure at its desired width without regard for the incoming measurement minimum width constraint.

From androidx.compose.animation
Modifier
Modifier.animateContentSize(animSpec: AnimationSpec<IntSize> = spring(), clip: Boolean = true, endListener: (startSize: IntSize, endSize: IntSize) -> Unit = null)

This modifier animates its own size when its child modifier (or the child composable if it is already at the tail of the chain) changes size.

From androidx.compose.foundation
Modifier
Modifier.background(color: Color, shape: Shape = RectangleShape)

Draws shape with a solid color behind the content.

Modifier
Modifier.background(brush: Brush, shape: Shape = RectangleShape, @FloatRange(0.0, 1.0) alpha: Float = 1.0f)

Draws shape with brush behind the content.

Modifier
Modifier.border(border: BorderStroke, shape: Shape = RectangleShape)

Modify element to add border with appearance specified with a border and a shape, pad the content by the BorderStroke.width and clip it.

Modifier
Modifier.border(width: Dp, color: Color, shape: Shape = RectangleShape)

Returns a Modifier that adds border with appearance specified with width, color and a shape, pads the content by the width and clips it.

Modifier
Modifier.border(width: Dp, brush: Brush, shape: Shape)

Returns a Modifier that adds border with appearance specified with width, brush and a shape, pads the content by the width and clips it.

Modifier
Modifier.clickable(enabled: Boolean = true, onClickLabel: String? = null, interactionState: InteractionState = remember { InteractionState() }, indication: Indication? = IndicationAmbient.current(), onLongClick: () -> Unit = null, onDoubleClick: () -> Unit = null, onClick: () -> Unit)

Configure component to receive clicks via input or accessibility "click" event.

Modifier
Modifier.drawBorder(border: Border, shape: Shape = RectangleShape)

Returns a Modifier that adds border with appearance specified with a border and a shape

Modifier
Modifier.drawBorder(size: Dp, color: Color, shape: Shape = RectangleShape)

Returns a Modifier that adds border with appearance specified with size, color and a shape

Modifier
Modifier.drawBorder(size: Dp, brush: Brush, shape: Shape)

Returns a Modifier that adds border with appearance specified with size, brush and a shape

Modifier
Modifier.horizontalScroll(state: ScrollState, enabled: Boolean = true, reverseScrolling: Boolean = false)

Modify element to allow to scroll horizontally when width of the content is bigger than max constraints allow.

Modifier
Modifier.indication(interactionState: InteractionState, indication: Indication? = null)

Show visual indicator for an InteractionState.

Modifier
Modifier.progressSemantics(@FloatRange(0.0, 1.0) progress: Float)

Contains the semantics required for a determinate progress indicator, that represents progress ranging from 0.

Modifier

Contains the semantics required for an indeterminate progress indicator, that represents the fact of the in-progress operation.

Modifier
Modifier.verticalScroll(state: ScrollState, enabled: Boolean = true, reverseScrolling: Boolean = false)

Modify element to allow to scroll vertically when height of the content is bigger than max constraints allow.

From androidx.compose.ui.draw
Modifier

Clip the content to shape.

Modifier

Clip the content to the bounds of a layer defined at this modifier.

Modifier
Modifier.drawOpacity(@FloatRange(0.0, 1.0) opacity: Float)

Draw content with modified opacity (alpha) that may be less than 1.

Modifier
Modifier.drawShadow(elevation: Dp, shape: Shape = RectangleShape, clip: Boolean = elevation > 0.dp, @FloatRange(0.0, 1.0) opacity: Float = 1f)

Creates a DrawLayerModifier that draws the shadow.

Modifier
Modifier.paint(painter: Painter, sizeToIntrinsics: Boolean = true, alignment: Alignment = Alignment.Center, contentScale: ContentScale = ContentScale.Inside, alpha: Float = DefaultAlpha, colorFilter: ColorFilter? = null)

Paint the content using painter.

From androidx.compose.ui
Modifier
Modifier.composed(factory: Modifier.() -> Modifier)

Declare a just-in-time composition of a Modifier that will be composed for each element it modifies.

Modifier
Modifier.drawBehind(onDraw: DrawScope.() -> Unit)

Draw into a Canvas behind the modified content.

Modifier
Modifier.drawLayer(scaleX: Float = 1f, scaleY: Float = 1f, alpha: Float = 1f, translationX: Float = 0f, translationY: Float = 0f, shadowElevation: Float = 0f, rotationX: Float = 0f, rotationY: Float = 0f, rotationZ: Float = 0f, transformOrigin: TransformOrigin = TransformOrigin.Center, shape: Shape = RectangleShape, clip: Boolean = false)

Draw the content into a layer.

Modifier

Creates a DrawModifier that allows the developer to draw before or after the layout's contents.

Modifier

Add this modifier to a component to make it focusable.

Modifier
Modifier.focusObserver(onFocusChange: (FocusState) -> Unit)

Add this modifier to a component to observe focus state changes.

Modifier

Add this modifier to a component to observe changes to focus state.

Modifier

Creates a LayoutModifier that allows changing how the wrapped element is measured and laid out.

Modifier

Invoke onPositioned with the LayoutCoordinates of the element after positioning.

Modifier

Creates a ZIndexModifier that controls the drawing order for the children of the same layout parent.

From androidx.compose.ui.gesture
Modifier

Responds to pointers going down and up (tap) and then down and up again (another tap) with minimal gap of time between the first up and the second down.

Modifier
Modifier.dragGestureFilter(dragObserver: DragObserver, canDrag: (Direction) -> Boolean = null, startDragImmediately: Boolean = false)

This gesture detector detects dragging in any direction.

Modifier
Modifier.dragSlopExceededGestureFilter(onDragSlopExceeded: () -> Unit, canDrag: (Direction) -> Boolean = null, orientation: Orientation? = null)

This gesture filter detects when the average distance change of all pointers surpasses the touch slop.

Modifier

This gesture detector detects dragging in any direction, but only after a long press has first occurred.

Modifier

Responds to a pointer being "down" for an extended amount of time.

Modifier
Modifier.pressIndicatorGestureFilter(onStart: (Offset) -> Unit = null, onStop: () -> Unit = null, onCancel: () -> Unit = null, enabled: Boolean = true)

This gesture detector has callbacks for when a press gesture starts and ends for the purposes of displaying visual feedback for those two states.

Modifier
Modifier.rawDragGestureFilter(dragObserver: DragObserver, canStartDragging: () -> Boolean = null, orientation: Orientation? = null)

This gesture detector detects dragging in any direction.

Modifier
Modifier.rawPressStartGestureFilter(onPressStart: (Offset) -> Unit, enabled: Boolean = false, executionPass: PointerEventPass = PointerEventPass.Main)

Reacts if the first pointer input change it sees is an unconsumed down change, and if it reacts, consumes all further down changes.

Modifier
Modifier.rawScaleGestureFilter(scaleObserver: RawScaleObserver, canStartScaling: () -> Boolean = null)

This gesture detector detects scaling.

Modifier

This gesture detector detects scaling.

Modifier
Modifier.scaleSlopExceededGestureFilter(onScaleSlopExceeded: () -> Unit)

This gesture detector detects when a user's pointer input is intended to include scaling.

Modifier
Modifier.scrollGestureFilter(scrollCallback: ScrollCallback, orientation: Orientation, canDrag: (Direction) -> Boolean = null, startDragImmediately: Boolean = false)

Like Modifier.dragGestureFilter, this gesture filter will detect dragging, but will only do so along the given orientation.

Modifier

This gesture detector fires a callback when a traditional press is being released.

From androidx.compose.foundation.gestures
Modifier
Modifier.draggable(orientation: Orientation, enabled: Boolean = true, reverseDirection: Boolean = false, interactionState: InteractionState? = null, startDragImmediately: Boolean = false, canDrag: (Direction) -> Boolean = { enabled }, onDragStarted: (startedPosition: Offset) -> Unit = {}, onDragStopped: (velocity: Float) -> Unit = {}, onDrag: Density.(Float) -> Unit)

Configure touch dragging for the UI element in a single Orientation.

Modifier
Modifier.scrollable(orientation: Orientation, controller: ScrollableController, enabled: Boolean = true, reverseDirection: Boolean = false, canScroll: (Direction) -> Boolean = { enabled }, onScrollStarted: (startedPosition: Offset) -> Unit = {}, onScrollStopped: (velocity: Float) -> Unit = {})

Configure touch scrolling and flinging for the UI element in a single Orientation.

Modifier
Modifier.zoomable(controller: ZoomableController, enabled: Boolean = true, onZoomStarted: () -> Unit = null, onZoomStopped: () -> Unit = null)

Enable zooming of the modified UI element.

Modifier
Modifier.zoomable(enabled: Boolean = true, onZoomStarted: () -> Unit = null, onZoomStopped: () -> Unit = null, onZoomDelta: (Float) -> Unit)

Enable zooming of the modified UI element.

From androidx.compose.ui.input.key
Modifier

Adding this modifier to the modifier parameter of a component will allow it to intercept hardware key events.

Modifier
Modifier.previewKeyInputFilter(onPreviewKeyEvent: (KeyEvent) -> Boolean)

Adding this modifier to the modifier parameter of a component will allow it to intercept hardware key events.

From androidx.compose.ui.layout
Modifier

Tag the element with id to identify the element within its parent.

From androidx.compose.ui.input.pointer
Modifier
Modifier.pointerInteropFilter(requestDisallowInterceptTouchEvent: RequestDisallowInterceptTouchEvent? = null, onTouchEvent: (MotionEvent) -> Boolean)

A special PointerInputModifier that provides access to the underlying MotionEvents originally dispatched to Compose.

From androidx.compose.foundation.selection
Modifier
Modifier.selectable(selected: Boolean, enabled: Boolean = true, inMutuallyExclusiveGroup: Boolean = true, interactionState: InteractionState = remember { InteractionState() }, indication: Indication? = IndicationAmbient.current(), onClick: () -> Unit)

Configure component to be selectable, usually as a part of a mutually exclusive group, where only one item can be selected at any point in time.

Modifier
Modifier.toggleable(value: Boolean, enabled: Boolean = true, interactionState: InteractionState = remember { InteractionState() }, indication: Indication? = IndicationAmbient.current(), onValueChange: (Boolean) -> Unit)

Configure component to make it toggleable via input and accessibility events

Modifier
Modifier.triStateToggleable(state: ToggleableState, enabled: Boolean = true, interactionState: InteractionState = remember { InteractionState() }, indication: Indication? = IndicationAmbient.current(), onClick: () -> Unit)

Configure component to make it toggleable via input and accessibility events with three states: On, Off and Indeterminate.

From androidx.compose.ui.semantics
Modifier
Modifier.semantics(mergeAllDescendants: Boolean = false, properties: SemanticsPropertyReceiver.() -> Unit)

Add semantics key/value for use in testing, accessibility, and similar use cases.

From androidx.compose.material
Modifier
Modifier.swipeable(state: SwipeableState<T>, anchors: Map<Float, T>, thresholds: (from: T, to: T) -> ThresholdConfig, orientation: Orientation, enabled: Boolean = true, reverseDirection: Boolean = false, interactionState: InteractionState? = null, resistance: ResistanceConfig? = defaultResistanceConfig(anchors.keys), velocityThreshold: Dp = DefaultVelocityThreshold)

Enable swipe gestures between a set of predefined states.

From androidx.compose.ui.platform
Modifier

Applies a tag to allow modified element to be found in tests.

Properties
abstract PointerInputFilter

Properties

pointerInputFilter

abstract val pointerInputFilter: PointerInputFilter