android - quitar - cómo limitar la barra de búsqueda
widget barra busqueda google android (6)
Me gustaría establecer los límites máximos y mínimos de SeekBar en 50 y 20, respectivamente.
SeekBar tiene una opción directa superior que proporciona el valor máximo, pero ¿cómo establecer su valor mínimo en 20 en lugar de 0?
Establezca el valor máximo en 30 y agregue 20 a los valores que lee en SeekBar.
He respondido esta pregunta aquí: cómo establecer el mínimo y máximo valor de la barra de búsqueda .
Con matemática simple puede establecer el valor mínimo, el valor máximo e incluso el paso de su barra de búsqueda.
Espero que esto ayude !
La forma más sencilla de hacerlo es limitarlo en SeekBar.OnSeekBarChangeListener()
para su SeekBar
.
Primero, necesita crear un campo con un valor mínimo o predeterminado. 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) {}
});
Puedes intentar esto:
seekBar.setMax(max_value-min_value);
En SeekBar puedes 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 para 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 ve el progreso mínimo, puede sumar con el mínimo que me gustaría, en su caso 20.