Android InputType详解

时间:2024-04-15 15:38:31
  1. android:inputType  

    •   如果设置android:inputType = "number",则默认弹出的输入键盘为数字键盘,且输入的内容只能为数字。

    • InputType文档:http://cs.szpt.edu.cn/android/reference/android/text/InputType.html
  2. setRawInputType(int type)

    • 也就是说可以通过改变这个方法 达到改变 键盘的输入显示,比如数字键盘,字符键盘,但是这个方法不改变你原有的 设置的字符限制。
    1. 比如若设置如下,则只是默认弹出弹出数字键盘,但对内容没有限制,此时任然可以输入字符等其他内容。
      setRawInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_SIGNED);
    2. 如果想设置允许输入字符,但是希望默认弹出的键盘为数字键盘就可以这样进行设置:
      setInputType(InputType.TYPE_CLASS_TEXT);
      setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
  3. setInputType(int type)

    •  效果跟android:inputType一样
  4. 细节(坑)Java中需设置基本类型:

    1. 设置只允许数字输入的InputType时,不能只单纯设置如下,否则将无效。
      setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);或者setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);正确的做法是在前面加上TYPE_CLASS_NUMBER,如下:
      •   setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_NORMAL);//只允许输入数字(正整数
        setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_SIGNED);//只允许输入数字(有符号整数
        setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);//只允许输入数字(decimal,小数
         
  1.    其他输入设置(如Text、Date、Time、Phone等)都有有相应的基本类型TYPE_CLASS_,使用时也需要在前面加上该基本类型TYPE_CLASS_,然后再加上需要的拓展类型,否则无效
      •