Класс PointerInputScope
Интерфейс PointerInputScope
служит приёмником лямбды у метода
pointerInput.
Внутри блока вызывают suspend-методы
detectTapGestures
и
detectDragGestures,
чтобы поймать tap и drag.
Таблицу методов на страницу pointerInput не копируют:
уроки лежат здесь.
Синтаксис
Modifier.pointerInput(Unit) {
detectTapGestures { }
}
Методы
| Метод | Описание |
|---|---|
detectTapGestures |
Ждёт одиночные и двойные нажатия, долгое нажатие. |
detectDragGestures |
Следит за перетаскиванием после нажатия. |
Пример
Давайте сменим текст по tap в области PointerInputScope:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var label by remember { mutableStateOf("abcde") }
Text(
text = label,
modifier = Modifier.pointerInput(Unit) {
detectTapGestures {
label = if (label == "abcde") "12345" else "abcde"
}
},
)
}
}
}
На экране нажатие по тексту переключит строку
между "abcde" и "12345".
Смотрите также
-
метод
pointerInput,
который открывает блок PointerInputScope -
метод
clickable,
который обрабатывает tap без suspend-блока -
метод
detectDragGestures,
который ловит перетаскивание в той же области -
метод
combinedClickable,
который добавляет долгое и двойное нажатие