我认为我可能在Android UI中发现了一个错误,但我想确保我没有做错什么。这是我运行的代码的简化版本,导致了问题。此侦听器设置在我的UI中特定的NumberPicker上,它可以正确地禁用/启用一些内容,但如果用户已更改了它禁用的其他NumberPickers之一的值,则会表现出一些奇怪的行为。
它仍然可以正确地禁用输入,但它无法使输入变灰,使其看起来仍然处于启用状态。这是有意的吗?我做错了什么吗?
它仍然可以正确地禁用输入,但它无法使输入变灰,使其看起来仍然处于启用状态。这是有意的吗?我做错了什么吗?
NumberPicker.OnValueChangeListener diceChangeListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
View parent = (View) picker.getParent();
if (newVal == 0) {
((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(false);
} else if (oldVal == 0) {
((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(true);
}
}
};
如果有更好的方法来处理这个问题,请告诉我,或者如果这是一个真正的 bug,是否有一种解决方法?
编辑:以下是 XML 中 diceCountPicker1 的定义:
<NumberPicker
android:id="@+id/diceCountPicker1"
android:layout_width="48dp"
android:layout_height="128dp"
android:descendantFocusability="blocksDescendants"
/>
编辑2:
我在模拟器中测试过这个问题,并确认在果冻豆(4.1)之前不存在这个问题。在ICS中,它可以正常工作。那很烦人。但是我现在可能能够接受它。我将保持这个问题的开放状态,以寻找可能解决该错误的方法,但在我看来,这是一个真正的错误,我怀疑它是否可以修复。
diceCountPicker1
的吗? - Pratik Sharma