Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
33 of 502 menu
◀ ▶

Метод draggable

Метод draggable интерфейса Modifier следит за перетаскиванием по горизонтали или вертикали. Смещение приходит в колбэк состояния DraggableState. Ось задаёт Orientation.

Синтаксис

Modifier.draggable( orientation = Orientation.Horizontal, state = draggableState, )

Параметры

Параметр Описание
orientation Orientation.Horizontal или Orientation.Vertical.
state Состояние перетаскивания. Создают через rememberDraggableState с обработчиком delta.
enabled Отключает жест перетаскивания.

Пример

Давайте сдвинем текст по горизонтали:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable import androidx.compose.foundation.gestures.rememberDraggableState import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import kotlin.math.roundToInt class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var offsetX by remember { mutableFloatStateOf(0f) } val dragState = rememberDraggableState { delta -> offsetX += delta } Text( text = "abcde", modifier = Modifier .offset { IntOffset(offsetX.roundToInt(), 0) } .draggable( orientation = Orientation.Horizontal, state = dragState, ) .background(Color.LightGray) .padding(16.dp), ) } } }

На экране серую плашку можно тянуть влево и вправо, текст сдвигается за пальцем.

Смотрите также

  • метод anchoredDraggable,
    перетаскивание с якорями
  • метод pointerInput,
    своя логика жестов
  • метод offset,
    фиксированный сдвиг без жеста
  • метод clickable,
    короткое нажатие без перетаскивания
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить