как сохранить значение SeekBar и передать его другим действиям? - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в языке kotlin и пытаюсь внедрить SeekBar для изменения размера TextView внутри моего действия по настройке и сохранить его значение с помощью общих настроек, а затем передать значения SeekBar в основное действие!

Я пробовал несколько ответов, но ни один из них, похоже, не работает для меня!

Настройка активности

 @RequiresApi(Build.VERSION_CODES.O)
fun seekbarFontSize(){

    var savedProgress1:Int = 0
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val editor = pref.edit()
    savedProgress1 = seekFontSize.progress
    editor.putInt("seekFonts", savedProgress1)
    editor.apply()
    seekFontSize.min = 20
    seekFontSize.max = 80
    seekbarCounter.text = "20"



        seekFontSize.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{
       /**
        * Notification that the progress level has changed. Clients can use the fromUser parameter
        * to distinguish user-initiated changes from those that occurred programmatically.
        *
        * @param seekBar The SeekBar whose progress has changed
        * @param progress The current progress level. This will be in the range min..max where min
        * and max were set by [ProgressBar.setMin] and
        * [ProgressBar.setMax], respectively. (The default values for
        * min is 0 and max is 100.)
        * @param fromUser True if the progress change was initiated by the user.
        */
       override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
           textFont.textSize = progress.toFloat()
           textFont1.textSize = progress.toFloat()
           seekbarCounter.text = "$progress"

       }


       /**
        * Notification that the user has started a touch gesture. Clients may want to use this
        * to disable advancing the seekbar.
        * @param seekBar The SeekBar in which the touch gesture began
        */
       override fun onStartTrackingTouch(seekBar: SeekBar?) {
           Toast.makeText(this@SettingActivity, "start tracking",Toast.LENGTH_LONG).show()

       }

       /**
        * Notification that the user has finished a touch gesture. Clients may want to use this
        * to re-enable advancing the seekbar.
        * @param seekBar The SeekBar in which the touch gesture began
        */
       override fun onStopTrackingTouch(seekBar: SeekBar?) {
           Toast.makeText(this@SettingActivity, "stop tracking",Toast.LENGTH_LONG).show()
       }

   })

MainAcitvity

fun seekbarSizing(){
    val pref = PreferenceManager.getDefaultSharedPreferences(this).getInt("seek", 0)
    if (pref == 0){
        TitleEt.textSize = 20f
    }
    if (pref == 1){
        TitleEt.textSize = 50f
    }
}

1 Ответ

0 голосов
/ 22 февраля 2019

Необходимо убедиться, что вы обновляете свое значение при перемещении SeekBar.Перемещение логики хранения в метод onProgressChanged будет работать.

@RequiresApi(Build.VERSION_CODES.O)
fun seekbarFontSize() {

  seekFontSize.min = 20
  seekFontSize.max = 80
  seekbarCounter.text = "20"

  seekFontSize.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
    override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
      textFont.textSize = progress.toFloat()
      textFont1.textSize = progress.toFloat()
      seekbarCounter.text = "$progress"

      // You need to save the current progress when the SeekBar is changed.
      val pref = PreferenceManager.getDefaultSharedPreferences(this)
      editor.putInt("seekFonts", savedProgress1)
      editor.apply()
    }

    // ... other methods
  }

})

Обратите внимание, что вы сохраняете значение от 20 до 80, тогда как ваш чек предназначен только для 0 и 1. Вы можете использовать разные мин./ max значений на вашем SeekBar, чтобы упростить расчет размера, если только вы не хотите использовать фактическое значение в качестве размера шрифта, например 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...