Я хотел бы установить максимальный и минимальный пределы SeekBar до 50 и 20 соответственно.
SeekBar имеет прямую опцию top, которая обеспечивает максимальное значение, но как установить минимальное значение в 20, а не 0?
Я хотел бы установить максимальный и минимальный пределы SeekBar до 50 и 20 соответственно.
SeekBar имеет прямую опцию top, которая обеспечивает максимальное значение, но как установить минимальное значение в 20, а не 0?
В SeekBar вы can set only max value.
<SeekBar android:id="@+id/SeekBar01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="50"/>
А, Вы не можете напрямую установить минимальное значение в панель поиска.
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) {}
});
Как вы видите прогресс мин, вы можете суммировать с min, который мне бы хотелось - в вашем случае 20.
Установите максимальное значение в 30 и добавьте 20 к значениям, которые вы читаете из SeekBar.
Самый простой способ сделать это - просто ограничить его в SeekBar.OnSeekBarChangeListener()
для вашего SeekBar
.
Сначала вам нужно создать поле с минимальным значением или значением по умолчанию. Затем установите это значение при создании SeekBar
:
private int fillDefault;
В onCreateView()
от Fragment
или onCreate
от Activity
:
fillDefault = 20;
fillSeekBar.setProgress(fillDefault);
Во-вторых, выполните для него прослушиватель:
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.
}
});
Это работает. Простой и удивительный: D
Например:
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) {}
});
Я ответил на этот вопрос здесь: Как установить минимальное и минимальное значение поиска.
С помощью простой математики вы можете установить минимальное значение, максимальное значение и даже шаг вашего поиска.
Надеюсь, это поможет!
Вы можете попробовать следующее:
seekBar.setMax(max_value-min_value);