Reputation: 2006
I have set input type to be numberdecimal but also want to populate the editText with a "-" programmatically. I can add the text but then I am unable to edit the text as it doesn't confirm to the number decimal format. Any idea on how I can say inputtype is numberdecimal but a "-" can be allowed?
Upvotes: 15
Views: 11243
Reputation: 471
In my case, I just created a simple class that allows numbers and hyphen only.
private static class myFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// Allow digits and hyphen in the input
String filters = "0123456789-";
StringBuilder filteredStringBuilder = new StringBuilder();
for (int i = start; i < end; i++) {
char currentChar = source.charAt(i);
if (filters.contains(String.valueOf(currentChar))) {
filteredStringBuilder.append(currentChar);
}
}
return filteredStringBuilder.toString();
}
}
Then in the ActivityClass, to add filter to the EditText:
EditText _eText;
_eText = findViewById(R.id.editText);
_eText.setInputType(InputType.TYPE_CLASS_TEXT);
_eText.setFilters(new InputFilter[]{new myFilter()});
Upvotes: 0
Reputation: 1281
I managed to do that with:
android:inputType="number|numberSigned"
android:digits="0123456789-"
Upvotes: 10
Reputation: 1021
I was able to achieve this behavior by setting digits
xml attribute as follows:
<EditText
...
android:inputType="number"
android:digits="0123456789-"/>
Setting it up programatically (Set EditText Digits Programmatically):
weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789-"));
Upvotes: 39
Reputation: 41
I found a very easy solution:
editText.setKeyListener(new DigitsKeyListener(true, true));
The first true
is for whether is signed input, the second true
is for decimal.
Hope that helps
Upvotes: 4
Reputation: 11875
You will have to write your own KeyListener. You could start by downloading the source of the NumberKeyListener and take it from there.
Martin
Upvotes: 2
Reputation: 128428
I am having one solution, which may helps you:
Suppose, You want to enter 2-3 numbers with "-" sign for e.g. 203-304-405.23-232.45,
then Allow user to enter this in EditText without setting any attributes.
and then you can Separate each numbers with "split()
" function , but be sure that there should be any separator sign in between the tokens.
then
String tokens[];
strInput = edittext1.getText.toString();
tokens = strInput.split(",");
then you can work with each tokens separately as tokens[0], tokens[1], for example:
num1 = tokens[0];
num2 = tokens[1];
Hope this helps you.
Enjoy!!
Upvotes: 1