[英]How to save SeekBar thumb position after setting value to its progress?
我正在尝试为字体站点的分段 SeekBar 工作,步骤为 2。它正在工作,但我无法保持拇指位置,它始终为 0。
private fun fontSize() {
val view = LayoutInflater.from(this).inflate(R.layout.font_size_layout, null)
size = view.findViewById(R.id.font_size_sb)
val preference = PrefManager(this)
font = view.findViewById(R.id.font_size_tv)
font.textSize = preference.getFontSize().toFloat()
font.text = preference.getFontSize().toString()
size.apply {
max = (36 - 12) / 2
progress = preference.getFontSize()
setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
updateFontSize(12 + (progress * 2))
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
})
}
AlertDialog.Builder(
this,
R.style.AlertDialogSlider
).apply {
setView(view)
create()
show()
}
}
private fun updateFontSize(i: Int) {
note.textSize = i.toFloat()
font.text = i.toString()
font.textSize = i.toFloat()
preference.saveFontSize(i)
}
我的偏好类 PrefManager:
class PrefManager(private var context: Context) {
fun saveFontSize(size: Int) {
context.getSharedPreferences("font_size", AppCompatActivity.MODE_PRIVATE).edit().apply {
putInt("fontSize", size)
apply()
}
}
fun getFontSize(): Int {
return context.getSharedPreferences("font_size", AppCompatActivity.MODE_PRIVATE)
.getInt("fontSize", -1)
}
例如,我将字体大小设置为 18:
这很好,对我有用,但是当我想再更改一次大小时,SeekBar 的位置不会停留在我最后离开的位置。 它结束:
我怎样才能保持这个位置?
花了很多时间,终于找到了解决办法,而且很简单:
class PrefManager(private var context: Context) {
fun saveFontSize(size: Int, progress: Int) {
context.getSharedPreferences("font_size", AppCompatActivity.MODE_PRIVATE).edit().apply {
putInt("fontSize", size)
putInt("progress", progress)
apply()
}
}
fun getFontSize(): Int {
return context.getSharedPreferences("font_size", AppCompatActivity.MODE_PRIVATE)
.getInt("fontSize", 18)
}
fun getProgress(): Int {
return context.getSharedPreferences("font_size", AppCompatActivity.MODE_PRIVATE)
.getInt("progress", 3)
}
}
以及 SeekBar 的一段代码:
size.apply {
progress = preference.getProgress()
setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(
seekBar: SeekBar?,
progress: Int,
fromUser: Boolean
) {
val fontSize = 12 + (progress * 2)
note.textSize = fontSize.toFloat()
font.text = fontSize.toString()
preference.saveFontSize(fontSize, progress)
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
})
}
我只需要在onProgressChanged()
保存progress
的原始值。 就这样!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.