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

如何在Kotlin中修改TickSeekBar的刻度值并输出日志

实现方案

1. 自定义刻度文本为2 4 6 8

该组件支持直接传入自定义刻度文本集合,无需依赖默认的min/max参数生成数值,两种实现方式修改如下:

XML布局写法

在原有布局属性基础上新增自定义刻度数组属性:

<com.warkiz.tickseekbar.TickSeekBar
    android:id="@+id/tsb1"
    android:layout_width="286dp"
    android:layout_height="wrap_content"
    app:tsb_ticks_count="4"
    app:tsb_thumb_color="@color/skyblue"
    app:tsb_thumb_size="16dp"
    app:tsb_show_tick_marks_type ="oval"
    app:tsb_tick_marks_color="@color/skyblue"
    app:tsb_tick_marks_size="8dp"
    app:tsb_show_tick_texts="below"
    app:tsb_tick_texts_color="@color/black"
    app:tsb_tick_texts_size="17sp"
    app:tsb_track_background_color="@color/divid_color"
    app:tsb_track_background_size="2dp"
    app:tsb_track_progress_color="@color/skyblue"
    app:tsb_track_progress_size="3dp"
    android:layout_marginTop="90dp"
    android:layout_marginLeft="40dp"
    <!-- 新增自定义刻度文本属性 -->
    app:tsb_tick_texts_array="@array/custom_ticks"/>

在res/values/arrays.xml中添加刻度数组:

<resources>
    <string-array name="custom_ticks">
        <item>2</item>
        <item>4</item>
        <item>6</item>
        <item>8</item>
    </string-array>
</resources>
动态创建Kotlin写法

直接传入自定义文本数组,调整对应参数即可:

// 定义自定义刻度数组
val customTicks = arrayOf("2", "4", "6", "8")
val seekBar = TickSeekBar
    .with(context!!)
    // 4个刻度对应索引0-3,设置min和max和索引范围匹配
    .max(3F)
    .min(0F)
    .progressValueFloat(true)
    .progress(0f) // 默认选中第一个刻度值2
    .tickCount(4) // 和数组长度保持一致
    // 传入自定义刻度文本
    .tickTextsArray(customTicks)
    .showTickMarksType(TickMarkType.DIVIDER)
    .tickMarksColor(resources.getColor(R.color.skyblue))
    .tickMarksSize(6) //dp
    .tickTextsSize(13) //sp
    .showTickTextsPosition(TextPosition.ABOVE)
    .tickTextsColorStateList(resources.getColorStateList(R.color.skyblue))
    .thumbColor(Color.parseColor("#ff0000"))
    .thumbSize(14)
    .trackProgressColor(resources.getColor(R.color.colorAccent))
    .trackProgressSize(4)
    .trackBackgroundColor(resources.getColor(R.color.skyblue))
    .trackBackgroundSize(2)
    .build()

2. 监听选中值输出日志

给组件设置滑动监听,通过选中位置匹配自定义数组的值输出日志即可:

// 若为XML布局引入,先获取自定义数组
val customTicks = resources.getStringArray(R.array.custom_ticks)

tsb1.setOnSeekChangeListener(object : OnSeekChangeListener {
    override fun onSeeking(seekParams: SeekParams?) {
        seekParams?.let {
            val selectedValue = customTicks[it.progress]
            Log.d("TickSeekBar", "当前选中值:$selectedValue")
        }
    }

    override fun onStartTrackingTouch(seekBar: TickSeekBar?) {}

    override fun onStopTrackingTouch(seekBar: TickSeekBar?) {}
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:06:03