在布局文件中添加多个NumberPicker,并将它们的最大值限制为每个NumberPicker需要的最大值。随后,在Java代码中实现适当的逻辑以确保所有NumberPicker的总和不超过所需总和。
例如,如果需要选择三个数字,它们的总和必须小于10,您可以按如下方式设置NumberPicker:
NumberPicker np1 = findViewById(R.id.numberPicker1);
NumberPicker np2 = findViewById(R.id.numberPicker2);
NumberPicker np3 = findViewById(R.id.numberPicker3);
np1.setMaxValue(9);
np2.setMaxValue(9);
np3.setMaxValue(9);
接下来,您需要在Java代码中实现逻辑以确保它们的总和不超过10。可以通过实现OnValueChangeListener接口并在值更改时更新总和来实现此目标:
private int total = 0;
np1.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
total = np1.getValue() + np2.getValue() + np3.getValue();
if (total > 10) {
picker.setValue(oldVal);
total = np1.getValue() + np2.getValue() + np3.getValue();
}
}
});
np2.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
total = np1.getValue() + np2.getValue() + np3.getValue();
if (total > 10) {
picker.setValue(oldVal);
total = np1.getValue() + np2.getValue() + np3.getValue();
}
}
});
np3.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
total = np1.getValue() + np2.getValue() + np3.getValue();
if (total > 10) {
picker.setValue(oldVal);
total = np1.getValue() + np2.getValue