Respostas:
Eu acho que android:inputType="number"
nos atributos XML.
android:inputType="phone"
no lugar disso. Mas parece um pouco mais "ocupado".
Por exemplo:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
e não0123456780.
Para inserir apenas dígitos, use android:inputType="numberPassword"
junto com editText.setTransformationMethod(null);
para remover a ocultação automática do número.
OU
android:inputType="phone"
Para entrada apenas de dígitos, acho que essas duas maneiras são melhores que android:inputType="number"
. A limitação de mencionar "número" como inputType é que o teclado permite alternar para caracteres e também permite que outros caracteres especiais sejam inseridos. "numberPassword" inputType não tem esses problemas, pois o teclado mostra apenas dígitos. Mesmo o tipo de entrada "telefone" funciona, pois o teclado não permite que você alterne para caracteres. Mas você ainda pode inserir dois caracteres especiais como +, /, N, etc.
android: inputType = "numberPassword" com editText.setTransformationMethod (null);
inputType = "telefone"
inputType = "number"
android:inputType="numberPassword"
junto comeditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
usando o abaixo pode resolver seu problema melhor;
em xml:
<EditText
android:id="@+id/age"
android:inputType="numberDecimal|numberSigned" />
ou // em atividade dentro de etfield.addtextchangelistener
private String blockCharacterSet="+(/)N,*;#";//declare globally
try {
for (int i = 0; i < s.length(); i++) {
if (blockCharacterSet.contains(s.charAt(i) + "")) {
String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
et_ArrivalSetTemp.setText(corrected_settempvalue);
if (corrected_settempvalue.length() != 0)
et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());
}
}
} catch (Exception d) {
d.printStackTrace();
}
Você pode usá-lo em XML
<EditText
android:id="@+id/myNumber"
android:digits="123"
android:inputType="number"
/>
ou,
android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.
ou,
android:inputType="phone"
Programaticamente, você pode usar
editText.setInputType (InputType.TYPE_CLASS_NUMBER);
Preciso pegar pressionando Enter em um teclado com o TextWatcher . Mas eu descobri que todos os teclados numéricos do Android: inputType = "number" ou "numberDecimal" ou "numberPassword" etc não me permitem pegar Enter quando o usuário pressiona.
Eu tentei android:digits="0123456789\n"
e todos os teclados numéricos começaram a funcionar com Enter e TextWatcher.
Então, meu caminho é:
android:digits="0123456789\n"
android:inputType="numberPassword"
mais editText.setTransformationMethod(null)
Graças a barmaley e abhiank.
Não sei qual foi a resposta correta em 13, mas hoje é:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
Você obtém tudo, inclusive o teclado na tela é um teclado numérico.
Quase tudo. O café expresso, em sua infinita sabedoria, permite typeText("...")
inexplicavelmente ignorar o filtro e entrar no lixo ...
o mais simples para mim
android:numeric="integer"
embora isso também personalize mais
android:digits="0123456789"