Реализация длительного нажатия на текст Jetpack compose

#android #android-jetpack-compose

Вопрос:

У меня есть один LazyColumn из Text() них . Я установил кликабельность для Text() , но это эквивалентно OnClickListner . Теперь я хочу установить эквивалент setOnLongClickListener . Как я могу это сделать?

 @Composable
fun MyText(name: String, modifier: Modifier = Modifier) {

  var isSelected by remember {
        mutableStateOf(false)
    }
        Text(
            text = "Hello $name!",
            modifier = modifier
                .clickable { isSelected = !isSelected }
                .padding(16.dp)
        )
 

Ответ №1:

Вы можете использовать combinedClickable модификатор для получения различных событий щелчка:

 Text(
    text = text,
    modifier = Modifier
        .combinedClickable(
            onLongClick = { /*....*/ },
            onClick ={ /*....*/ })
        .padding(16.dp)
)
 

Обратите внимание, что это @ExperimentalFoundationApi функция, которая, вероятно, будет изменена или удалена в будущем.

Комментарии:

1. Это экспериментально, верно? Этот базовый API является экспериментальным и, вероятно, будет изменен или удален в будущем. @ExperimentalFoundationApi

2. @TinaTT2 Да, это может измениться, как и многие другие в текущей версии 1.0.0