2016-04-26 78 views
2

我偶然发现了this library by Anothem。基本上它提供了一个SeekBar类似于默认的Android,但有两个拇指控件允许选择一个范围,以及其他一些额外功能。如何使用seekbar设置时间范围

作为此刻的seekbar可以numbers/digits之间选择的范围,但不能在12 hours系统等12am-3pm用于实际time范围选择。

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

在通过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);

回答

3

你为什么从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); 
+0

感谢您的答复!第一部分我同意,但我确定用户选择的时间,我一直被告知“操作员/不能应用于T”的部分,请参阅上面的pastebin上的第586行。 –

+0

@SteveKamau我假设你正在尝试使用类型T来表示一个时间值。为什么不明确使用float或double并根据该值确定时间?然后,您可以添加使用上述计算的方法,例如getSelectedMinTime()和getSelectedMaxTime() – AgileNinja

+0

Aaahh令人惊叹!现在我明白了,那很棒! –