2014-07-09 2 views
0

У меня есть seekBar, и вы хотите иметь кнопки «ticker» для легкого увеличения 1. На данный момент мой текст обновляется только один раз. Однако, если мой seekBar изменен, я могу поставить отметку + 1 еще раз. Сообщите мне, хотите ли вы увидеть больше кода. Все остальное отлично работает.Нужен тикер для SeekBar, который можно кликать более одного раза

ib2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      int addOne = 1; 
      progress = seekBar.getProgress(); 
      progress = progress + addOne; 
      if(progress < 18) 
       textView1.setText(": "+ 18); 
      textView1.setText(": " + progress); 
     ib2.setClickable(true); 

     } 
    });  
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
     { 

      @Override 
      public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) 
      { 
       progresValue = 18; 
      progress = progresValue; 

      if(progress < 18) 
      { 
       progress = 18; 
       textView1.setText(": "+ progress); 
      } 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) 
      { 
       textView1.setText(": "); 
       progress= seekBar.getProgress(); 
       textView1.setText(": " + progress); 
      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) 
      { 
       if(seekBar.getProgress() < 18) 
       { 
        progress = 18; 
       textView1.setText(": " + progress); 

       } 
       else 
       { 

       textView1.setText(": " + seekBar.getProgress()); 
       } 
      } 
     }); 
+0

Почему вы установите 'progresValue' 18 на начало вашего метода onProgressChanged? –

+0

Я пытаюсь установить минимальное значение. Я не хочу, чтобы значение было ниже 18. Этот код был скопирован и вставлен в точку, где я случайно догадывался и проверял через некоторое время, поэтому некоторые из них могут не иметь смысла. – droidShot

ответ

0

Ваша проблема в том, что вы забыли установить ход SeekBar после увеличения его. Вы должны добавить:

seekBar.setProgress(progress); 

в конце вашего метода onClick.


BTW, ваш код может быть упрощен много, следующий код делает точно так же, как у вас, но в более короткий путь:

ib2.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     seekBar.setProgress(seekBar.getProgress() + 1); 
    } 
});  

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) { 
     if(progresValue < 18) { 
      textView1.setText(": "+ 18); 
     } else { 
      textView1.setText(": "+ progresValue); 
     } 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     textView1.setText(": " + seekBar.getProgress()); 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) {} 
}); 
+0

Извините за неаккуратный код и спасибо, он работает. – droidShot

+0

Я отредактировал свой ответ и добавил упрощенную версию вашего кода. Это должно быть проще понять и использовать. Надеюсь, это поможет вам. –

+0

Еще раз спасибо! В любом случае, чтобы начать поисковую панель, показывая в 18? (на фактическом баре?) – droidShot