Точное воссоздание сенсорных эффектов элементов управления надписями и значками в Jetpack Compose

#android-jetpack-compose #android-touch-event

Вопрос:

Я привык к старым компонентам Android, таким как androidx.appcompat.widget.AppCompatCheckBox .

Эффект наведения спиннера

Теперь я пытаюсь воссоздать этот компонент в Compose. Я зашел довольно далеко, по крайней мере, поверхностно:

 ProvideTextStyle(MaterialTheme.typography.button) {
    Row(
        Modifier.clickable(onClick = { setDropdownOpen(true) })
            .padding(start = 24.dp, end = 18.dp)
            .sizeIn(minWidth = 48.dp,minHeight = 48.dp)
            .fillMaxWidth(),
        Arrangement.SpaceBetween,
        Alignment.CenterVertically
    ) {
        Text(label, Modifier.weight(1F, false))
        Icon(
            Icons.Filled.ExpandMore,
            stringResource(R.string.select_alphabet),
            Modifier,
            tint = MaterialTheme.colors.primary
        )
    }
}
 

Спиннер для реактивного ранца

Но я изо всех сил пытаюсь реализовать некоторые особенности поведения при прикосновении.

Конкретно:

  • Прикосновение к тексту должно активировать рябь для значка, а не фона для всей строки.
  • Перетаскивание пальца изнутри компонента за пределы компонента должно активировать выпадающее меню.

Как мне это сделать?