我创建了两个数字选择器来伪装成时间选择器,目的很简单,就是能够重复旋转 0 - 30,这很有效。
但现在我想将这两个数字选择器显示到文本视图。
因此,如果数字选择器显示下图中的内容:
那么时间输出应该显示这个: 在此处输入图像描述
这是我的代码:
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 似乎获取数字的位置而不是实际数字。
显示 textview 的更改似乎也只发生在用户旋转右侧的数字(分钟)时,如果他们旋转左侧的数字(小时)也应该发生更改