Ograniczanie wyboru numeru Android do klawiatury numerycznej dla wprowadzania numerycznego (nie klawiatury Alpha)
Czy istnieje sposób sugerowania lub ograniczania danych wprowadzanych z klawiatury podczas wybierania obiektu NumberPicker, aby podczas wprowadzania wartości wyświetlane były tylko elementy sterujące liczbą, podobnie jak można użyćandroid:inputType="number"
z EditText?
Mam serię wartości od 0,0 do 100,0 w przyrostach co 0,1, które chciałbym móc użyć za pomocą narzędzia NumberPicker, aby wybrać w systemie Android 4.3. Aby móc wybierać liczby, utworzyłem tablicę ciągów, która odpowiada tym wartościom, jak pokazano poniżej:
NumberPicker np = (NumberPicker) rootView.findViewById(R.id.programmingNumberPicker);
int numberOfIntensityOptions = 1001;
BigDecimal[] intensityDecimals = new BigDecimal[numberOfIntensityOptions];
for(int i = 0; i < intensityDecimals.length; i++ )
{
// Gets exact representations of 0.1, 0.2, 0.3 ... 99.9, 100.0
intensityDecimals[i] = BigDecimal.valueOf(i).divide(BigDecimal.TEN);
}
intensityStrings = new String[numberOfIntensityOptions];
for(int i = 0; i < intensityDecimals.length; i ++)
{
intensityStrings[i] = intensityDecimals[i].toString();
}
// this will allow a user to select numbers, and bring up a full keyboard. Alphabetic keys are
// ignored - Can I somehow change the keyboard for this control to suggest to use *only* a number keyboard
// to make it much more intuitive?
np.setMinValue(0);
np.setMaxValue(intensityStrings.length-1);
np.setDisplayedValues(intensityStrings);
np.setWrapSelectorWheel(false);
Jak więcej informacji, zauważyłem, że jeśli nie użyjęsetDisplayedValues()
metoda i zamiast tego ustawić liczby całkowite bezpośrednio, klawiaturę numerycznąbędzie być użyty, ale problem polega na tym, że wprowadzany numer jest 10 razy większy niż powinien być - np. jeśli wpiszesz „15” do kontrolki, zostanie to zinterpretowane jako „1,5”
// This will allow a user to select using a number keyboard, but input needs to be 10x more than it should be.
np.setMinValue(0);
np.setMaxValue(numberOfIntensityOptions-1);
np.setFormatter(new NumberPicker.Formatter() {
@Override
public String format(int value) {
return BigDecimal.valueOf(value).divide(BigDecimal.TEN).toString();
}
});
Wszelkie sugestie, jak podnieść klawiaturę numeryczną, aby umożliwić użytkownikowi wprowadzanie liczb dziesiętnych w ten sposób?