anchoredDraggable
Common
Modifier in Compose Foundation
Enable drag gestures between a set of predefined values.
When a drag is detected, the offset of the [AnchoredDraggableState] will be updated with the drag delta. You should use this offset to move your content accordingly (see [Modifier.offset]). When the drag ends, the offset will be animated to one of the anchors and when that anchor is reached, the value of the [AnchoredDraggableState] will also be updated to the value corresponding to the new anchor.
Dragging is constrained between the minimum and maximum anchors.
Last updated:
Installation
dependencies {
implementation("androidx.compose.foundation:foundation:1.8.0-alpha04")
}
Overloads
fun <T> Modifier.anchoredDraggable(
state: AnchoredDraggableState<T>,
reverseDirection: Boolean,
orientation: Orientation,
enabled: Boolean = true,
interactionSource: MutableInteractionSource? = null,
overscrollEffect: OverscrollEffect? = null,
flingBehavior: FlingBehavior? = null
): Modifier
Parameters
name | description |
---|---|
state | The associated [AnchoredDraggableState]. |
reverseDirection | Whether to reverse the direction of the drag, so a top to bottom drag will behave like bottom to top, and a left to right drag will behave like right to left. If not specified, this will be determined based on [orientation] and [LocalLayoutDirection] through the other [anchoredDraggable] overload. |
orientation | The orientation in which the [anchoredDraggable] can be dragged. |
enabled | Whether this [anchoredDraggable] is enabled and should react to the user's input. |
interactionSource | Optional [MutableInteractionSource] that will passed on to the internal [Modifier.draggable]. |
overscrollEffect | optional effect to dispatch any excess delta or velocity to. The excess delta or velocity are a result of dragging/flinging and reaching the bounds. If you provide an [overscrollEffect], make sure to apply [androidx.compose.foundation.overscroll] to render the effect as well. |
flingBehavior | Optionally configure how the anchored draggable performs the fling. By default (if passing in null), this will snap to the closest anchor considering the velocity thresholds and positional thresholds. See [AnchoredDraggableDefaults.flingBehavior]. |
@Deprecated(StartDragImmediatelyDeprecated)
fun <T> Modifier.anchoredDraggable(
state: AnchoredDraggableState<T>,
reverseDirection: Boolean,
orientation: Orientation,
enabled: Boolean = true,
interactionSource: MutableInteractionSource? = null,
overscrollEffect: OverscrollEffect? = null,
startDragImmediately: Boolean = state.isAnimationRunning,
flingBehavior: FlingBehavior? = null
): Modifier
Parameters
name | description |
---|---|
state | The associated [AnchoredDraggableState]. |
reverseDirection | Whether to reverse the direction of the drag, so a top to bottom drag will behave like bottom to top, and a left to right drag will behave like right to left. If not specified, this will be determined based on [orientation] and [LocalLayoutDirection] through the other [anchoredDraggable] overload. |
orientation | The orientation in which the [anchoredDraggable] can be dragged. |
enabled | Whether this [anchoredDraggable] is enabled and should react to the user's input. |
interactionSource | Optional [MutableInteractionSource] that will passed on to the internal [Modifier.draggable]. |
overscrollEffect | optional effect to dispatch any excess delta or velocity to. The excess delta or velocity are a result of dragging/flinging and reaching the bounds. If you provide an [overscrollEffect], make sure to apply [androidx.compose.foundation.overscroll] to render the effect as well. |
startDragImmediately | when set to false, [draggable] will start dragging only when the gesture crosses the touchSlop. This is useful to prevent users from "catching" an animating widget when pressing on it. See [draggable] to learn more about startDragImmediately. |
flingBehavior | Optionally configure how the anchored draggable performs the fling. By default (if passing in null), this will snap to the closest anchor considering the velocity thresholds and positional thresholds. See [AnchoredDraggableDefaults.flingBehavior]. |
fun <T> Modifier.anchoredDraggable(
state: AnchoredDraggableState<T>,
orientation: Orientation,
enabled: Boolean = true,
interactionSource: MutableInteractionSource? = null,
overscrollEffect: OverscrollEffect? = null,
flingBehavior: FlingBehavior? = null
): Modifier
Parameters
name | description |
---|---|
state | The associated [AnchoredDraggableState]. |
orientation | The orientation in which the [anchoredDraggable] can be dragged. |
enabled | Whether this [anchoredDraggable] is enabled and should react to the user's input. |
interactionSource | Optional [MutableInteractionSource] that will passed on to the internal [Modifier.draggable]. |
overscrollEffect | optional effect to dispatch any excess delta or velocity to. The excess delta or velocity are a result of dragging/flinging and reaching the bounds. If you provide an [overscrollEffect], make sure to apply [androidx.compose.foundation.overscroll] to render the effect as well. |
flingBehavior | Optionally configure how the anchored draggable performs the fling. By default (if passing in null), this will snap to the closest anchor considering the velocity thresholds and positional thresholds. See [AnchoredDraggableDefaults.flingBehavior]. |
@Deprecated(StartDragImmediatelyDeprecated)
fun <T> Modifier.anchoredDraggable(
state: AnchoredDraggableState<T>,
orientation: Orientation,
enabled: Boolean = true,
interactionSource: MutableInteractionSource? = null,
overscrollEffect: OverscrollEffect? = null,
startDragImmediately: Boolean = state.isAnimationRunning,
flingBehavior: FlingBehavior? = null
): Modifier
Parameters
name | description |
---|---|
state | The associated [AnchoredDraggableState]. |
orientation | The orientation in which the [anchoredDraggable] can be dragged. |
enabled | Whether this [anchoredDraggable] is enabled and should react to the user's input. |
interactionSource | Optional [MutableInteractionSource] that will passed on to the internal [Modifier.draggable]. |
overscrollEffect | optional effect to dispatch any excess delta or velocity to. The excess delta or velocity are a result of dragging/flinging and reaching the bounds. If you provide an [overscrollEffect], make sure to apply [androidx.compose.foundation.overscroll] to render the effect as well. |
startDragImmediately | when set to false, [draggable] will start dragging only when the gesture crosses the touchSlop. This is useful to prevent users from "catching" an animating widget when pressing on it. See [draggable] to learn more about startDragImmediately. |
flingBehavior | Optionally configure how the anchored draggable performs the fling. By default (if passing in null), this will snap to the closest anchor considering the velocity thresholds and positional thresholds. See [AnchoredDraggableDefaults.flingBehavior]. |