Cómo limitar el buscador
Me gustaría establecer límites máximos y mínimos de SeekBar a 50 y 20, respectivamente.
SeekBar tiene una opción directa top proporcionar valor máximo, pero ¿cómo establecer su valor mínimo a 20 en lugar de 0?
En SeekBar can set only max value.
<SeekBar android:id="@+id/SeekBar01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="50"/>
Y, No puede establecer directamente el valor mínimo en la barra de búsqueda.
SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01); mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { length_edit.setText(Integer.toString(progress + 20)); } public void onStartTrackingTouch(SeekBar seekBar) {} public void onStopTrackingTouch(SeekBar seekBar) {} });
Como se ve el progreso mínimo se puede sumar con min que me gustaría – en su caso 20.
Establezca el valor máximo en 30 y añada 20 a los valores leídos de SeekBar.
La forma más sencilla de hacerlo es limitarlo en SeekBar.OnSeekBarChangeListener()
para su SeekBar
.
Primero, necesitas crear un campo con min o valor por defecto. A continuación, establezca este valor al crear SeekBar
:
private int fillDefault;
En onCreateView()
de un Fragment
o onCreate
de una Activity
:
fillDefault = 20; fillSeekBar.setProgress(fillDefault);
En segundo lugar, implementar el oyente para ello:
fillSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // Notification that the progress level has changed. if (progress < fillDefault){ seekBar.setProgress(fillDefault); // magic solution, ha } } @Override public void onStartTrackingTouch(SeekBar seekBar) { // Notification that the user has started a touch gesture. } @Override public void onStopTrackingTouch(SeekBar seekBar) { // Notification that the user has finished a touch gesture. } });
Funciona. Simple e impresionante: D
Por ejemplo;
public static int LENGTH_MIN_VALUE = 20; public static int LENGTH_MAX_VALUE = 50; SeekBar seekBar = (SeekBar) findViewById(R.id.passwordSeekBar); seekBar.setMax(LENGTH_MAX_VALUE); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if(progress <= Constract.PASSWORD_LENGTH_MIN_VALUE){ progress = Constract.PASSWORD_LENGTH_MIN_VALUE + progress; } String numberAsString = String.valueOf(progress); seekNumberView.setText(numberAsString); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} });
He respondido a esta pregunta aquí: Cómo establecer seekbar mínimo y máximo valor .
Con la matemática simple usted puede fijar el valor mínimo, el valor máximo e incluso el paso de su barra de búsqueda.
Espero que esto ayude !
Puede probar esto:
seekBar.setMax(max_value-min_value);