调整 SeekBar 长度

Adjusting SeekBar length

我有一个具有以下 kotlin 函数的 Android 应用程序:

fun setAdjustBars() {
    val clrSetBarR = SeekBar(this)
    val clrSetBarG = SeekBar(this)
    val clrSetBarB = SeekBar(this)

    clrSetBarR.thumbTintList = ColorStateList.valueOf(Color.rgb(255,0,0))
    clrSetBarG.thumbTintList = ColorStateList.valueOf(Color.rgb(0,255,0))
    clrSetBarB.thumbTintList = ColorStateList.valueOf(Color.rgb(0,0,255))

    val sideColrVal = 77
    clrSetBarR.progressTintList = ColorStateList.valueOf(Color.rgb(255,sideColrVal,sideColrVal))
    clrSetBarG.progressTintList = ColorStateList.valueOf(Color.rgb(sideColrVal,255,sideColrVal))
    clrSetBarB.progressTintList = ColorStateList.valueOf(Color.rgb(sideColrVal,sideColrVal,255))

    val constrSet = ConstraintSet()
    val seekBarsArray = arrayOf(clrSetBarR,clrSetBarG,clrSetBarB)

    seekBarsArray.map {
        it.id = View.generateViewId()
        constraintLayout?.addView(it)
        it.rotation = 270.0F
        it.max = 255
    }

    constrSet.clone(constraintLayout)

    seekBarsArray.map {
        constrSet.connect(it.id, ConstraintSet.BOTTOM, deviceFrameID, ConstraintSet.BOTTOM)
        constrSet.setMargin(it.id, ConstraintSet.BOTTOM, 50)
    }

    val sideShift = 150
    constrSet.connect(clrSetBarR.id, ConstraintSet.LEFT, deviceFrameID, ConstraintSet.LEFT)
    constrSet.setMargin(clrSetBarR.id, ConstraintSet.LEFT, sideShift)
    constrSet.connect(clrSetBarG.id, ConstraintSet.LEFT, deviceFrameID, ConstraintSet.LEFT)
    constrSet.connect(clrSetBarG.id, ConstraintSet.RIGHT, deviceFrameID, ConstraintSet.RIGHT)
    constrSet.connect(clrSetBarB.id, ConstraintSet.RIGHT, deviceFrameID, ConstraintSet.RIGHT)
    constrSet.setMargin(clrSetBarB.id, ConstraintSet.RIGHT, sideShift)

    constrSet.applyTo(constraintLayout)
}

函数的作用是在显示的底部放置三个垂直的SeekBar对象。正如您在下面的屏幕截图中看到的那样,它完成了它的工作。我遇到的一个问题是钢筋的长度(高度)太短了。如何修改我的代码以获得适当长度的条形图? (说几厘米而不是现在的一毫米左右)

您必须更改 SeekBarwidth 以调整其长度。将其添加到布局后更改其宽度。

seekBarsArray.map {
    it.id = View.generateViewId()
    constraintLayout?.addView(it)
        
    val params = it.layoutParams
    params.width = 350
    it.layoutParams = params
        
    it.max = 255
    it.rotation = 270f
}

由于您的视图位于屏幕底部,旋转它可能会将视图移出屏幕。您可能希望在旋转视图之前更改视图的轴心点。