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);
}
}
};
これを行うためのより良い方法があるかどうか、またはこれが正当なバグであるかどうかを教えてください。バグの場合、それを回避する方法はありますか?
編集:XMLでのdiceCountPicker1の定義は次のとおりです。
<NumberPicker
android:id="@+id/diceCountPicker1"
android:layout_width="48dp"
android:layout_height="128dp"
android:descendantFocusability="blocksDescendants"
/>
編集2:
私はこれをエミュレーターでテストし、Jellybean(4.1)より前に問題が存在しないことを確認しました。ICSでは正しく機能します。うざい。しかし、私は今のところそれと一緒に暮らすことができるかもしれません。バグを回避するための潜在的な方法については、これを開いたままにしておきますが、実際のバグのように見え、修正できるとは思えません。