android seekbar 显示数字

android seekbar

代码

MySeekBar.kt

package com.example.apps.happybaby.views

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
import android.text.TextPaint
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatSeekBar


class MySeekBar : AppCompatSeekBar {
    // 画笔
    private var mPaint: Paint? = null

    // 进度文字位置信息
    private val mProgressTextRect: Rect = Rect()

    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )

    init {
        mPaint = TextPaint()
        mPaint!!.isAntiAlias = true
        mPaint!!.color = Color.parseColor("#00574B")
        mPaint!!.textSize = this.thumb.intrinsicHeight.toFloat()
        // 如果不设置padding,当滑动到最左边或最右边时,滑块会显示不全
        /*  setPadding(this.thumb.intrinsicWidth / 2, 0, this.thumb.intrinsicWidth / 2, 0)*/
    }

    @Synchronized
    protected override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        val progressText: String = progress.toString()
        mPaint!!.getTextBounds(progressText, 0, progressText.length, mProgressTextRect)

        // 进度百分比
        val progressRatio: Float = progress.toFloat() / max.toFloat()
        var thumbX =
            (width - paddingEnd - paddingStart) * progressRatio + paddingStart - this.thumb.intrinsicWidth / 2.0f
        if (progressRatio > 0.8f) {
            thumbX -= this.thumb.intrinsicHeight / 2.0f
        }
        val thumbY: Float = height / 2f - mProgressTextRect.height() / 2f
        canvas.drawText(progressText, thumbX, thumbY, mPaint!!)
    }


}

使用

 <com.example.apps.happybaby.views.MySeekBar
            android:id="@+id/meshSeekBar"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_gravity="right|center"
            android:layout_margin="@dimen/lg_margin"
            android:max="100"
            android:min="1"
            android:paddingStart="@dimen/lg_padding"
            android:paddingEnd="@dimen/lg_padding"
            android:progress="10" />
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值