我做了一个创建了两个数字选取器来伪装成时间选取器的简单目的是能够重复旋转0-30,这是可行的。
但是现在我想在文本视图中显示这两个数字选择器。
因此,如果numberpickers显示了下图中的内容:
在此处输入图像描述
然后timeoutput应该显示:在这里输入图像描述
这是我的密码:
public void timepicker() {
mMinuteSpinner.setMinValue(0);
mMinuteSpinner.setMaxValue(3);
mMinuteSpinner.setDisplayedValues(new String[]{"00", "30", "00", "30"});
mMinuteSpinner.setOnValueChangedListener(this);
mHourSpinner.setMinValue(0);
mHourSpinner.setMaxValue(23);
String[] hours = new String[24];
for (int i = 0; i < 24; i++) {
hours[i] = String.format("%02d", i );
}
mHourSpinner.setDisplayedValues(hours);
}
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
boolean advanced = (newVal == 0 && oldVal == 3) || (newVal == 2 && oldVal == 1);
boolean regressed = (newVal == 3 && oldVal == 0) || (newVal == 1 && oldVal == 2);
if (advanced) {
mHourSpinner.setValue(mHourSpinner.getValue() + 1);
} else if (regressed) {
mHourSpinner.setValue(mHourSpinner.getValue() - 1);
}
我还尝试了以下几种:
timeoutput.setText("" + mHourSpinner.getValue() + "h" + mMinuteSpinner.getValue());
但没用。getvalue似乎得到的是数字的位置,而不是实际的数字。
对显示文本视图的更改似乎也只发生在用户旋转右边的数字(分钟)时,如果用户旋转左边的数字(小时)时也应该发生更改
2条答案
按热度按时间z5btuh9x1#
根本原因
当您选择
mHourSpinner
,什么都没发生,因为你忘了打电话setOnValueChangedListener
在上面。getvalue()只返回
Picker
如果没有显示值,则必须使用getdisplayedvalues()来执行此操作。解决方案:将代码更改为
f87krz0w2#
这是因为你没有
onValueChangeListener
至mHourSpinner
. 请尝试以下操作:为了你的孩子
onValueChangeListener
,而不是从任何微调器读取的oldval和newval,而是直接从微调器获取值,如下所示: