Полностью заблокировать событие onClick, исходящее от маркера-приманки (android-maps-compose).Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Полностью заблокировать событие onClick, исходящее от маркера-приманки (android-maps-compose).

Сообщение Anonymous »

Я пытаюсь добавить светящийся маркер на карту Google. Для этого я использую простой маркер и еще один маркер с растровой маской и анимированной альфа-каналом. Второй маркер — это приманка, единственная цель которого — показать свечение позади основного маркера. Я хочу, чтобы только основной маркер был единственным пользователем onClick.
В идеале светящийся маркер остается позади основного маркера и никогда не взаимодействует с ним. пользовательский ввод. Мне не нужно поведение onClick по умолчанию, исходящее от него, я не хочу, чтобы ЛЮБОЕ событие onClick запускалось из этого маркера, и я хочу, чтобы оно всегда оставалось за маркером без свечения. с основным маркером, обрабатывающим весь ввод пользователя из onClick?.invoke().
Проблема в том, что маркер свечения потребляет событие onClick из-за многоуровневого характера моего маркерный состав. При нажатии на несветящийся маркер я ожидаю появления модального нижнего листа, и он появляется. Легкий. Однако, когда я плавно нажимаю на несветящийся маркер, светящийся маркер, кажется, фиксирует щелчок, таким образом, не вызывая срабатывания моего нижнего листа (хотя это и должно было бы произойти). Что касается zIndex, то он, похоже, не влияет на поведение так сильно, как мне хотелось бы, т. е. проблема остается.
Ссылка на видео. Обратите внимание на дополнительный щелчок между развернутым и скрытым состояниями нижнего листа.
Код:
@Composable
fun LocationPin(
glowBitmap: BitmapDescriptor?,
noGlowBitmap: BitmapDescriptor?,
position: LatLng,
isSelected: Boolean,
onClick: (() -> Unit)? = null
) {
val markerState = rememberMarkerState(position = position)
val glowMarkerState = rememberMarkerState(position = position)
val glowAlpha = remember { Animatable(0f) }

LaunchedEffect(isSelected) {
if (isSelected) {
glowAlpha.animateTo(
targetValue = 1f, animationSpec = tween(durationMillis = 2500)
)
} else glowAlpha.snapTo(0f)
}

Marker(
state = markerState,
icon = noGlowBitmap,
alpha = 1f,
zIndex = -1f,
onClick = {
onClick?.invoke()
Log.d("LocationPin", "clicked no glow")
true
})

if (isSelected) {
Marker(
state = glowMarkerState,
icon = glowBitmap,
alpha = glowAlpha.value,
zIndex = 1f,
onClick = {
Log.d("LocationPin", "clicked with glow")
true
}
)
}
}

Если то, чего я пытаюсь достичь с помощью маркера-ловушки, невозможно, есть ли какой-нибудь надежный способ применить свечение в качестве приманки за маркером? В идеале приманка должна менять свой масштаб в ответ на масштабирование камеры аналогично тому, как это делает Маркер.
Журналы:
19:28:52.146 D clicked no glow
19:28:59.580 D clicked with glow
19:29:00.768 D clicked no glow
19:29:02.165 D clicked with glow
19:29:02.897 D clicked no glow
19:29:04.119 D clicked with glow
19:29:04.757 D clicked no glow
19:29:34.243 D clicked with glow
19:29:35.291 D clicked no glow
19:29:37.246 D clicked with glow
19:29:38.188 D clicked no glow
19:29:39.982 D clicked with glow
19:29:41.586 D clicked no glow


Подробнее здесь: https://stackoverflow.com/questions/785 ... ps-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»