How do I use InputType=numberDecimal with the “phone” soft keypad?

后端 未结 5 1207
不知归路
不知归路 2021-02-01 18:59

For an EditText box, the user should only be entering valid numbers, so I am using android:inputType=\"numberDecimal\". Unfortunately, the soft keyboar

相关标签:
5条回答
  • 2021-02-01 19:16

    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));
    
    0 讨论(0)
  • 2021-02-01 19:23

    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)?

    0 讨论(0)
  • 2021-02-01 19:27

    Try using android:numeric="integer" in your EditText view.

    0 讨论(0)
  • 2021-02-01 19:33

    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.

    0 讨论(0)
  • 2021-02-01 19:35

    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.

    0 讨论(0)
提交回复
热议问题