【问题标题】:How to set time range using seekbar如何使用搜索栏设置时间范围
【发布时间】:2016-08-20 12:45:14
【问题描述】:

我偶然发现了this library by Anothem。基本上,它提供了一个类似于默认 Android 的SeekBar,但有两个拇指控件允许选择一个范围,以及其他一些附加功能。

目前seekbar 可以在numbers/digits 之间选择范围,但不能用于12 hours 系统中的实际time 范围选择,例如12am-3pm。

我正在努力实现上述目标,但没有成功。

查看 stackoverflow 后,我再次偶然发现了 similar issue,但似乎无法针对我的情况重用或实施。

同样,github repo 承诺会解决问题,但在运行课程后,我根本看不到变化。

任何建议都将受到高度赞赏!

Here is the class to modify.

我是如何使用它的:

RangeSeekBar rangeSeekBar = (RangeSeekBar) findViewById(R.id.seekbar);
        rangeSeekBar.setRangeValues(15, 90);
        rangeSeekBar.setSelectedMinValue(20);
        rangeSeekBar.setSelectedMaxValue(88);

【问题讨论】:

    标签: android android-seekbar


    【解决方案1】:

    为什么将范围值设置为 15 到 90?如果您尝试描绘时间,则应将范围值设置为:

    rangeSeekBar.setRangeValues(0,24 * SMALLEST_HOUR_FRACTION);
    

    SMALLEST_HOUR_FRACTION 是您可以选择的最小时间段(2 选择每半小时一次,4 每一刻钟(15 分钟)选择一次,60 每分钟选择一次)。

    然后,要确定用户选择的时间,使用:

    int minHour = rangeSeekBar.getSelectedMinValue() / SMALLEST_HOUR_FRACTION;
    int minMinute = SMALLEST_HOUR_FRACTION * (rangeSeekBar.getSelectedMinValue() % SMALLEST_HOUR_FRACTION);
    int maxHour = rangeSeekBar.getSelectedMaxValue() / SMALLEST_HOUR_FRACTION;
    int maxMinute = SMALLEST_HOUR_FRACTION * (rangeSeekBar.getSelectedMaxValue() % SMALLEST_HOUR_FRACTION);
    

    【讨论】:

    • 感谢您的回复!我同意第一部分,但是我确定用户选择的时间的部分,我一直被告知“操作员/不能应用于 T”,请参见上面 pastebin 的第 586 行。
    • @SteveKamau 我假设您正在尝试使用类型 T 来表示时间值。为什么不明确使用浮点数或双精度数并根据该值确定时间?然后您可以添加使用上述计算的方法,例如 getSelectedMinTime() 和 getSelectedMaxTime()
    • 啊啊啊太棒了!!现在我明白了,那就是很多!
    • 它对我不起作用,有时它会提供像凌晨 2:70 或凌晨 2:90 这样的时间
    • @SteveKamau 如果您可以发布示例,您可以发布它吗?另外,我将如何使它成为一个圆形搜索栏?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多