For an EditText
box, the user should only be entering valid numbers, so I am using android:inputType=\"numberDecimal\"
. Unfortunately, the soft keyboar
Adam Dunn code works perfect, but didnt show how to implement the class
import android.text.method.DigitsKeyListener;
import android.text.InputType;
public class CustomDigitsKeyListener extends DigitsKeyListener
{
public CustomDigitsKeyListener() {
super(false, false);
}
public CustomDigitsKeyListener(boolean sign, boolean decimal) {
super(sign, decimal);
}
public int getInputType() {
return InputType.TYPE_CLASS_PHONE;
}
}
then you have to instance like this
MyTextView.setKeyListener(new CustomDigitsKeyListener(true,true));
So far, what I've decided to do is extend the DigitsKeyListener and override getInputType() so that it will return InputType.TYPE_CLASS_PHONE. This allows me to use the handy filter() in DigitsKeyListener, but at the same time use the TYPE_CLASS_PHONE soft keyboard. I'm new to Android programming, but this appears to work without breaking anything. Code is something like this:
import android.text.method.DigitsKeyListener;
import android.text.InputType;
public class CustomDigitsKeyListener extends DigitsKeyListener
{
public CustomDigitsKeyListener() {
super(false, false);
}
public CustomDigitsKeyListener(boolean sign, boolean decimal) {
super(sign, decimal);
}
public int getInputType() {
return InputType.TYPE_CLASS_PHONE;
}
}
Is there anything wrong in doing this (switching the return of getInputType() to something that the superclass didn't intend)?
Try using android:numeric="integer"
in your EditText view.
You just use the phone keyboard and check the input by yourself. It isn't a very big condition to test if the input is a valid digit between 0 and 9.
I had the same problem. This works for me:
<item name="android:inputType">numberDecimal</item>
<item name="android:digits">0123456789.</item>
Hopefully this helps you.