You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose中Vico Charts的markerVisibilityListener示例求助

解决Vico Charts中CartesianChartHost的markerVisibilityListener使用问题

markerVisibilityListener 是 CartesianChartHost 的回调参数,用于监听Marker的显示/隐藏状态。你可以通过实现 MarkerVisibilityListener 接口,在Marker显示时获取其中的数据并打印到Logcat。

以下是补充完整后的代码示例:

CartesianChartHost(
    chart =
        rememberCartesianChart(
            rememberCandlestickCartesianLayer(),
            startAxis = rememberStartAxis(),
            bottomAxis =
                rememberBottomAxis(
                    guideline = null,
                    itemPlacer =
                        remember { AxisItemPlacer.Horizontal.default(spacing = 3, addExtremeLabelPadding = true) },
                ),
        ),
    modelProducer = modelProducer,
    marker = marker,
    markerVisibilityListener = object : MarkerVisibilityListener {
        override fun onMarkerShown(entries: List<MarkerEntry>) {
            // 遍历Marker内的数据条目,打印到Logcat
            entries.forEachIndexed { index, entry ->
                Log.d("VicoMarkerLog", "第${index+1}条数据: X值=${entry.x}, Y值=${entry.y}, 原始数据源=${entry.data}")
            }
        }

        override fun onMarkerHidden() {
            // 可选:Marker隐藏时执行的操作,比如打印日志
            Log.d("VicoMarkerLog", "Marker已隐藏")
        }
    },
    modifier = modifier,
    horizontalLayout = HorizontalLayout.fullWidth(),
)

关键参数说明:

  • onMarkerShown:Marker显示时触发,entries 包含当前Marker承载的所有数据条目。每个 MarkerEntry 的核心字段:
    • x:选中位置的X轴数值
    • y:选中位置的Y轴数值
    • data:对应你传入图表的原始数据对象(比如K线数据模型)
  • onMarkerHidden:Marker隐藏时触发(如用户点击图表其他区域、离开图表范围),可按需添加逻辑。

内容的提问来源于stack exchange,提问作者user1583128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:11:06