【发布时间】:2021-08-09 18:30:47
【问题描述】:
private static int INCREMENT_BY = 10;
private static int MAX = 1000;
private static int MIN = 0;
SeekBar seekbar_min, seekbar_max;
private int max = 0, min = 0;
seekbar_min.setProgress(MIN);
seekbar_min.incrementProgressBy(INCREMENT_BY);
seekbar_min.setMax(MAX);
seekbar_min.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = progress / INCREMENT_BY;
progress = progress * INCREMENT_BY;
if (progress < 100) {
min = progress * 10;
} else if (progress < 300) {
min = progress * 50;
} else if (progress < 900) {
min = progress * 100;
} else {
min = progress * MAX;
}
tv_price_min.setText(String.valueOf(min));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (seekBar.getProgress() != MIN || seekBar.getProgress() != MAX){
if (seekBar.getProgress() < 100) {
max = seekBar.getProgress() + 10;
} else if (seekBar.getProgress() < 300) {
max = seekBar.getProgress() + 50;
} else if (seekBar.getProgress() < 900) {
max = seekBar.getProgress() + 100;
} else {
max = seekBar.getProgress() + MAX;
}
seekbar_max.setProgress(max);
}
}
});
seekbar_max.incrementProgressBy(INCREMENT_BY);
seekbar_max.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = progress / INCREMENT_BY;
progress = progress * INCREMENT_BY;
if (progress < 100) {
max = progress * 10;
} else if (progress < 300) {
max = progress * 50;
} else if (progress < 900) {
max = progress * 100;
} else {
max = progress * MAX;
}
tv_price_max.setText(String.valueOf(max));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Seek bar 的最高价格必须具有最小值,即 Minimum Seek bar 当前值。我可以成功地做到这一点,但问题是,最大搜索栏允许将最小值更改为 0,这是我不想要的。
【问题讨论】:
-
你不能设置最小值,你可以定义最大值。
-
解决方案是将 0 转换为你的最小值 in progressChanged
-
不,我可以选择使用 setProgress() 方法设置最小值。但如果用户不更改最大搜索栏值,它会起作用,当用户更改最大搜索栏值时,它会改变。
-
在 onProgressChange 检查它是否低于您的最小值,将其设置为最小值
标签: android