Ответ 1
Вместо этого, чтобы не просто установить максимальное значение SeekBar равным 50 (250/5), а затем выполнить любое преобразование из значений SeekBar в "реальные" значения?
В моем приложении у меня есть Seekbar
, который отображается в диалоговом окне.
Теперь я хочу установить интервал и шаг в Seekbar
. Интервал должен быть 0-250, а каждый шаг должен составлять 5 минут.
пока это мой код:
public class seekActivity extends Activity implements OnClickListener, OnSeekBarChangeListener {
SeekBar seekbar;
Button button;
TextView textview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set up main content view
setContentView(R.layout.main);
//this button will show the dialog
Button button1main = (Button) findViewById(R.id.Button01main);
button1main.setOnClickListener(this);
}
public void onClick(View v) {
//set up dialog
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.maindialog);
dialog.setTitle("This is my custom dialog box");
dialog.setCancelable(true);
button = (Button) dialog.findViewById(R.id.Button01);
seekbar = (SeekBar) dialog.findViewById(R.id.seekBar1);
seekbar.setOnSeekBarChangeListener(this);
textview = (TextView) dialog.findViewById(R.id.textView1);
dialog.show();
}
public class SeekBarPreference {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
textview.setText(progress + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
};
}
Может ли кто-нибудь дать мне несколько советов/кода, как это сделать?
Спасибо!
Вместо этого, чтобы не просто установить максимальное значение SeekBar равным 50 (250/5), а затем выполнить любое преобразование из значений SeekBar в "реальные" значения?
Вам нужно просто обновить метод onProgressChanged следующим образом.
int stepSize = 5;
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
progress = ((int)Math.round(progress/stepSize))*stepSize;
seekBar.setProgress(progress);
textview.setText(progress + "");
}
Если вы используете
Math.round((float)progress / stepSize) * stepSize
ваш порог будет находиться в середине двух шагов
Если вы используете
progress / stepSize * stepSize
ползунок всегда будет прыгать на левый шаг. Это просто сократит десятичные числа в делении.