1

(-50 -> 50) で構成される NumberPicker の一連の数値を使用しようとしています。NumberPicker の MinValue / MaxValue は 0 / 100 に設定され、デフォルトの開始点 (0) の値は 50 に設定されます。 -1 から -5 を除いて数字が適切に表示される理由がわかりません...選択されていない場合は正常に表示されます...選択されている場合は、-19、-29、-39、-49、-50 として表示されます。

供給している int 配列をテストしましたが、その中のすべての値は問題ありません。

これは、NumberPicker を設定するために使用しているコードのスニペットです...

String[] currentScoreArray = new String[100];
final NumberPicker currentScore = (NumberPicker) findViewById(R.id.currentScore);
for (int i = 0; i <= 100; i++)
    currentScoreArray[i] = Integer.toString(i - 50);
currentScore.setMaxValue(100);
currentScore.setMinValue(0);
currentScore.setWrapSelectorWheel(false);
currentScore.setDisplayedValues(currentScoreArray);
currentScore.setValue(50);

baba tenor と話した後も、この問題を解決できません。問題の YouTube ビデオを作成し、ビデオ コメントのリンクにコードと logcat を含めました。

http://www.youtube.com/watch?v=bF39THktVY4

4

2 に答える 2

3

古い質問ですが、他のユーザーのためにアイデアを投稿します:

NumberPicker.Formatterを使用できるかもしれません。

例:

final int minValue = -50
final int maxValue = 50
NumberPicker numberPicker = new NumberPicker(myActivity);
numberPicker.setMinValue(0);
numberPicker.setMaxValue(maxValue - minValue);
numberPicker.setValue(myCurrentValue - minValue);
numberPicker.setFormatter(new NumberPicker.Formatter() {
    @Override
    public String format(int index) {
        return Integer.toString(index - minValue);
    }
});

次に、選択した値を取得します。

int myNewValue = numberPicker.getValue() + minValue
于 2013-07-17T12:24:37.553 に答える
1

独自の NumberPicker クラスを実装する必要があるようです。http://www.quietlycoding.com/?p=5のコードから始めることができます。これは明らかに、Google NumberPicker ウィジェットが使用するものに近いものです。EditText オブジェクトに設定された InputFilter は、負の数が表示されないようにします。EditText オブジェクトの setFilters への呼び出しをコメント アウトするだけで、開始するために負の数が表示されます。InputFilter の実装を掘り下げると、より優れたソリューションを提供できます。

于 2012-12-14T18:18:52.913 に答える