Compose for Desktop 如何改变鼠标样式。但是没有ModifierpointerIcon
如果没有Modifier.pointerIcon,可以尝试使用Modifier.pointerInput结合PointerIcon来改变鼠标样式。以下是一个示例:
import androidx.compose.desktop.Window
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.input.pointer.pointerHoverFilter
import androidx.compose.ui.input.pointer.PointerIcon
import androidx.compose.ui.input.pointer.PointerIcon.Companion.Default
import androidx.compose.ui.input.pointer.PointerIcon.Companion.Hand
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.IntSize
fun main() = Window {
Box(
modifier = Modifier
.background(Color.White)
.pointerInput(Unit) {
while (true) {
// 获取鼠标位置
val position = awaitPointerEventScope {
awaitPointerEvent().mousePosition
}
// 根据位置设置不同的鼠标样式
val icon = when {
position.x < 100 && position.y < 100 -> Hand
else -> Default
}
// 设置鼠标样式
val iconModifier = Modifier.pointerIcon(icon)
// 应用鼠标样式
dispatchPointerEvent(pointerEvent.copy(icons = setOf(iconModifier)))
}
}
.pointerHoverFilter { position ->
// 设置鼠标悬停时的样式
val hoverIcon = when {
position.x < 100 && position.y < 100 -> Hand
else -> Default
}
IntOffset.Zero to PointerIcon(hoverIcon)
}
) {
// 绘制界面
}
}
在上面的示例中,我们使用pointerInput来监听鼠标事件,并根据鼠标位置设置不同的鼠标样式。在pointerHoverFilter中,我们还设置了鼠标悬停时的样式
原文地址: https://www.cveoy.top/t/topic/h5eB 著作权归作者所有。请勿转载和采集!