gpt4 book ai didi

android - 日期范围 Android 应用程序 slider 的最小差异

转载 作者:行者123 更新时间:2023-11-29 00:30:35 25 4
gpt4 key购买 nike

我正在使用 Range Seek Bar我已经有效地初始化了一个日期范围 slider 。如何将 slider 设置为具有 10 年的最小范围差异?我的 slider 是 1950 年至今的。我只想允许具有最小年差的范围。

这就是我最终所做的:

@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Long minValue, Long maxValue) {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy", Locale.US);
int minYear = Integer.parseInt(formatter.format(minValue));
int maxYear = Integer.parseInt(formatter.format(maxValue));
//Log.i(getClass().getName(), "User selected new range values: MIN=" + minYear + ", MAX=" + maxYear);

if ((maxYear - minYear) < 10) {
//range is less than 10 years so we have to manually set it back.
if (minValue != previousMin){
//min is what changed
mDateRangeSeekBar.setSelectedMinValue(previousMin);
} else if (maxValue != previousMax) {
//max is what changed
mDateRangeSeekBar.setSelectedMaxValue(previousMax);
}
} else {
//range was big enough so set previous values for next time.
previousMin = minValue;
previousMax = maxValue;
}
mMinDateTemp = new Date(mDateRangeSeekBar.getSelectedMinValue());
mMaxDateTemp = new Date(mDateRangeSeekBar.getSelectedMaxValue());
refresh();
}

最佳答案

您应该能够使用 onChanged() 回调来检查您的范围的值,如果它太小,则将任何值设置回前一个值。

类似这样的东西(我没有编译,所以您可能需要修正拼写错误或小的逻辑错误,抱歉):

//declare these in your activity
private int previousMin = -1;
private int previousMax = -1;

seekBar.setOnRangeSeekBarChangeListener(new OnRangeSeekBarChangeListener<Integer>() {
@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
// handle changed range values
Log.i(TAG, "User selected new range values: MIN=" + minValue + ", MAX=" + maxValue);
if((maxValue - minValue) < 10){
//range is less than 10 so we have to manually set it back.
if(minValue != previousMin){
//min is what changed
seekBar.setSelectedMinValue(previousMin);
}
else if(maxValue != previousMax){
//max is what changed
seekBar.setSelectedMaxValue(previousMax);
}
}else{
//range was big enough so set previous values for next time.
previousMin = minValue;
previousMax = maxValue;
}
}
});

关于android - 日期范围 Android 应用程序 slider 的最小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com