Android Studio 设置EditText输入类型和内容长度 - MilkeZhang 的网络笔记

1、设置输入类型设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置。(1)使用EditText的setInputType()方法设置输入类型: EditText editText; //输入类型为没有指定明确的类型的特殊内容类型 editText.se

Android Studio 设置EditText输入类型和内容长度

Android Studio 设置EditText输入类型和内容长度

阅读:2464  点赞:0   留言:0


1、设置输入类型

设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置。

(1)使用EditText的setInputType()方法设置输入类型:

    EditText editText;

    //输入类型为没有指定明确的类型的特殊内容类型
    editText.setInputType(InputType.TYPE_NULL);

    //输入类型为普通文本
    editText.setInputType(InputType.TYPE_CLASS_TEXT);

    //输入类型为数字文本
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);

    //输入类型为电话号码
    editText.setInputType(InputType.TYPE_CLASS_PHONE);

    //输入类型为日期和时间
    editText.setInputType(InputType.TYPE_CLASS_DATETIME);

    //输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,允许输入日期和时间。
    editText.setInputType(InputType.TYPE_DATETIME_VARIATION_NORMAL);

    //输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。
    editText.setInputType(InputType.TYPE_DATETIME_VARIATION_DATE);

    //输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。
    editText.setInputType(InputType.TYPE_DATETIME_VARIATION_TIME);

    //输入类型为决定所给文本整体类的位掩码
    editText.setInputType(InputType.TYPE_MASK_CLASS);

    //输入类型为提供附加标志位选项的位掩码
    editText.setInputType(InputType.TYPE_MASK_FLAGS);

    //输入类型为决定基类内容变化的位掩码
    editText.setInputType(InputType.TYPE_MASK_VARIATION);

    //输入类型为小数数字,允许十进制小数点提供分数值。
    editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
    //输入类型为数字是带符号的,允许在开头带正号或者负号
    editText.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);

    //输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为纯普通数字文本
    editText.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);

    //输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为数字密码
    editText.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);

    //输入类型为自动完成文本类型
    editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

    //输入类型为自动纠正文本类型
    editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);

    //输入类型为所有字符大写
    editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);

    //输入类型为每句的第一个字符大写
    editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

    //输入类型为每个单词的第一个字母大写
    editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);

    //输入多行文本
    editText.setInputType(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);

    //进行输入时,输入法无提示
    editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

    //输入一个短的,可能是非正式的消息,如即时消息或短信。
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE);

    //输入长内容,可能是正式的消息内容,比如电子邮件的主体
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);

    //输入文本以过滤列表等内容
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);

    //输入一个电子邮件地址
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);

    //输入电子邮件主题行
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT);

    //输入一个密码
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

    //输入老式的普通文本
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);

    //输入人名
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);

    //输入邮寄地址
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS);

    //输入语音发音输入文本,如联系人拼音名称字段
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_PHONETIC);

    //输入URI
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_URI);

    //输入对用户可见的密码
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

    //输入网页表单中的文本
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);

    //输入网页表单中的邮件地址
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS);

    //输入网页表单中的密码
    editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD);


简单的例子:

       /**
         * 第一个例子:对用户可见的密码字段
         */
        editText.setInputType(InputType.TYPE_CLASS_TEXT |
                InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

        /**
         * 第二个例子:具有自动大写的多行邮寄地址
         */
        editText.setInputType(InputType.TYPE_CLASS_TEXT |
                InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS |
                InputType.TYPE_TEXT_FLAG_MULTI_LINE);

        /**
         * 第三个例子:一个时间字段
         */
        editText.setInputType(InputType.TYPE_CLASS_DATETIME |
                InputType.TYPE_DATETIME_VARIATION_TIME);


在本文的后续,将会附上Android源码中的InputType.java。

(2)在布局文件中使用android:inputType属性来设置:

//输入类型为没有指定明确的类型的特殊内容类型
android:inputType="none"

//输入类型为普通文本
android:inputType="text"

 //输入类型为数字文本
 android:inputType="number"

//输入类型为电话号码
 android:inputType=”phone”

//输入类型为日期和时间
 android:inputType=”datetime”

 //输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。
 android:inputType=”date”

 //输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。
 android:inputType=”time”

//输入类型为小数数字,允许十进制小数点提供分数值。
 android:inputType="numberDecimal"

//输入类型为数字是带符号的,允许在开头带正号或者负号
 android:inputType="numberSigned"

//输入类型为数字密码
 android:inputType="numberPassword"

//输入类型为自动完成文本类型
 android:inputType="textAutoComplete"

//输入类型为自动纠正文本类型
 android:inputType="textAutoCorrect"

//输入类型为所有字符大写
 android:inputType="textCapCharacters"

//输入类型为每句的第一个字符大写
 android:inputType="textCapSentences"

//输入类型为每个单词的第一个字母大写
 android:inputType="textCapWords"

//输入法多行文本
 android:inputType="textImeMultiLine"

//进行输入时,输入法无提示
 android:inputType="textNoSuggestions"

 //输入一个短的,可能是非正式的消息,如即时消息或短信。
 android:inputType="textShortMessage"

//输入长内容,可能是正式的消息内容,比如电子邮件的主体
 android:inputType="textLongMessage"

//输入文本以过滤列表等内容
 android:inputType="textFilter"

//输入一个电子邮件地址
 android:inputType="textEmailAddress"

//输入电子邮件主题行
 android:inputType="textEmailSubject"

//输入一个密码
 android:inputType="textPassword"

//输入对用户可见的密码
 android:inputType="textVisiblePassword"

//输入人的姓名
 android:inputType="textPersonName"

//输入邮寄地址
 android:inputType="textPostalAddress"

//输入语音发音输入文本,如联系人拼音名称字段
 android:inputType="textPhonetic"

//输入URI
 android:inputType="textUri"

//输入网页表单中的文本
 android:inputType="textWebEditText"

//输入网页表单中的邮件地址
 android:inputType="textWebEmailAddress"

//输入网页表单中的密码
 android:inputType="textWebPassword"


2、限制输入长度
通过maxLength
以下只允许输入5位数字:

<EditText
    android:id="@+id/et_dialog_freq"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLength="5"
    android:inputType="number"/>


3、修改edittext的横线的颜色(激活状态和未激活状态两种颜色)
在style.xml或者theme.xml中添加:

    <style name="MyEditText" parent="Theme.AppCompat.Light">
        <item name="colorControlNormal">@color/grey</item>
        <item name="colorControlActivated">@color/centerColor</item>
    </style>


在xml文件中

 <EditText
	  ...
      android:theme="@style/MyEditText"/>		


4、使EditText失去焦点,edittext禁止弹出键盘
参考:https://blog.csdn.net/u011630575/article/details/50775639
有时候一进入一个页面, EditText默认就会自动获取焦点。弹出输入法框,用户体验很不好,

那么如何取消这个默认行为呢?

目前有更好的办法,第一种方法局限性很强,大家可以使用第二种方法


EditText et_username=(EditText)findViewById(R.id.et_username); 
EditText et_password=(EditText)findViewById(R.id.et_password); 
et_username.clearFouse();
et_password.clearFouse();


在其父控件下,添加如下的属性,就可以完美解决:

android:focusable="true"   (能够获取焦点)
android:focusableInTouchMode="true"   (通过点击获得焦点)


举例如下

 <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
         android:focusable="true" 
         android:focusableInTouchMode="true">   
        <EditText 
            android:id="@+id/et_enter_msg_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>    
        <Button 
            android:id="@+id/sent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/send"/>
            
    </LinearLayout>


第二种方法:直接关闭输入法

private  void  closeInputMethod() {
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
     boolean  isOpen = imm.isActive();
     if  (isOpen) {
         // imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示
         imm.hideSoftInputFromWindow(mobile_topup_num.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
     }
}


调用这个方法体就行了,具体if语句里面的几个参数,我就借用一个网友的日志来写

1 、方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示)
  
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput( 0 , InputMethodManager.HIDE_NOT_ALWAYS); 
  
2 、方法二(view为接受软键盘输入的视图,SHOW_FORCED表示强制显示)
  
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); 
[java] view plaincopy
imm.hideSoftInputFromWindow(view.getWindowToken(),  0 );  //强制隐藏键盘 
 
3 、调用隐藏系统默认的输入法
  
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity. this .getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);  (WidgetSearchActivity是当前的Activity) 
 
4 、获取输入法打开的状态
  
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
boolean  isOpen=imm.isActive(); //isOpen若返回true,则表示输入法打开 

编写于:2023/2/3 11:37:36
发布 IP 属地:

版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!


艾金森

每一个童年的梦想都值得用青春去捍卫!




用户地图 心情地图 日记地图 笔记地图 时间轴地图 投票地图 习题地图 你们的岩床实相及其可能的群组,太阳系,太空旅行,神经的改变和意识的交会18、19周Generated by ChatGPT兄妹日常2021年7月26日2007年星洲日报的文章来自2005年美国的华文报纸。满山的猴子我腚最红 的日记 2024/04/07 12:53:29兄妹日常2021年9月13日兄妹日常2021年8月2日jedahdohma 的日记 2024/03/12 09:28:06MosiS 的日记 2024/04/21 20:08:19今早早起了半小时(转发崔庆龙微博24-5-9 6:54 阴)织金洞外无洞天!#空气一少,医生的手术刀就在你的身体乱乱开刀106天后的重新登录归零2024/5/33月10日记兄妹日常2021年10月4日芊. 的日记 2024/05/01 20:12:46兄妹日常2021年10月6日3月16日记平庸之恶夏谢秋 的日记 2024/04/22 23:21:21《魔鬼代言人》龙升虎自闲 的日记 2024/02/24 08:54:25克服表达欲2024-02-11 日记【家族沟南烧烤】无病呻吟雪尽染 的日记 2023/12/27 23:08:47写给爷爷的信兄妹日常2021年8月14日000009-无悔100-211-无悔100-4圣诞兄妹日常2021年9月1日夏谢秋 的日记 2024/04/19 22:17:02平安夜2023年12月29日 星期五 晴 志愿者金台寺一个小确幸求求你别想心选姐了无条件的快乐和无根据的自信乱七八糟兄妹日常2021年7月31日夏谢秋 的日记 2024/06/12 22:45:17兄妹日常2021年8月13日浪子回头金不换 的日记 2024/03/22 17:12:19addition tokey4127 的日记 2024/01/14 23:02:60赛斯记录站The Triumph of Spitzjedahdohma 的日记 2024/06/09 21:02:40困惑虚无的重复日常夏谢秋 的日记 2024/05/18 23:05:27兄妹日常2021年9月28日兄妹日常2021年8月27日兄妹日常2021年9月8日2024年3月14日цитат из "Как Закалялась Сталь"2024-03-27 Web开发记录【后台强化 与 内部数据结构调整】兄妹日常2021年9月26日夏谢秋 的日记 2024/05/23 23:10:38Generated by ChatGPT直面恐惧~~~兄妹日常2021年9月6日Journey to Freedom随笔记4月7日兄妹日常2021年8月12日Prank and Orchester DesperationGenerated by ChatGPT夏谢秋 的日记 2024/04/20 22:33:57the Trigonometric Tango2023年12月27日 星期三 晴 心理咨询师 新人学习第3天鲸落. 的日记 2024/05/20 20:21:36兄妹日常2021年9月12日走吧FMSL/JiA 的日记 2024/01/20 14:23:182024-02-07 日记【哥斯拉的数学题】2024.4.10 论文准备投稿#2007年是星州日报最后一年写文3月18日记摔跤兄妹日常2021年9月7日一封不会寄出的信兄妹日常2021年9月5日兄妹日常2021年8月25日28/5/2024 和阿庆的小吵架3月30日记专业见习(5)1226兄妹日常2021年8月3日兄妹日常2021年10月16日夏谢秋 的日记 2024/06/14 21:18:11七宗罪Generated by ChatGPTjedahdohma 的日记 2024/05/28 14:47:34#十年如一日的煮一点都不焦的饭。兄妹日常2021年8月21日...【Datasheet】QMI8658A 六轴陀螺仪芯片笔记本扩展外屏【内存不足】判断题疑难点74-78 程序你想活出怎样的人生。【Datasheet】FD6288T 三个独立的半桥栅极驱动集成电路芯片感冒笔记1人间值得。20231227回家 近期周处除三害好吧20240426如果你是别人,你也会讨厌我的家用服务器被迫推移,新款服务器选择困难记清明出行。记录一下自己装电视支架的历程,踩雷经验分享无主题。契机。我不怕死亡。只害怕遗忘。证券短线波段SolidWorks装配体保存成零件方法混乱的一个月底。文章练习2标题怎么起。文章练习4哲理卡牌游戏玩家目的分析判断题疑难点66-67 图片音频文件春天吗。放弃这一次证券股投机,等待3个月之后的机会目标【用户意见】2024-05-17 【Bug的修复】【Datasheet】FE2.1 USB 2.0高速7端口集线器控制器【再一次为生在这个家庭而感到幸运】Better Man塔罗被禁了?!也许这样也不错。《健身先健脑》判断题疑难点43-57 基本办公软件【Datasheet】CH342K USB转双串口芯片jedahdohma 的笔记 2024/05/17 15:38:42为无知道歉,却又羡慕年少。哲理一辈子的底气。道具灵感不知道是想写日记还是笔记。把脑子重新捡起来。ad及时止损就是赚对吧。对吧。判断题疑难点28-34 不常用软件与工具操你妈的,你妈了个逼【2024年】个人家用电脑配置,NAS小服务器29/3/2024 和妈妈手机里大吵了一架C# <summary>注释实现换行我抠出来了!!!【用户意见】2024-03-24 【Bug的修复】《走遍德国》B2 S106阅读翻译练习判断题疑难点21-27 压缩与编码觉着活着没意思的,推荐一个视频。Matthew H. Kramer:《菲尼斯式的报应主义》节选翻译I铂鹿 的笔记 2024/06/10 11:48:09文章练习3casxsax 的笔记 2024/05/09 10:38:48刻意的伪装成不经意。赫兹伯格的卫生理论2024年6月19日Android Studio 【SeekBar】基本用法哲理【鱼露】调味料是什么【Datasheet】AX3071UA DC-DC电源判断题疑难点68-73 操作系统PRD产品需求文档 | 实例撰写指南【非原创】【Datasheet】Amlogic A311D AI芯片参数规格OC_角色_上簇观OC_角色_乱象OC_角色_窃贼小姐【Datasheet】SCT2A10STER DC-DC电源芯片判断题疑难点1-20 python编程相关练习1我爱我的国。我爱我的家。熊市末端持股策略,下跌何时结束。【Datasheet】SiC461, SiC462, SiC463, SiC464 DC-DC电源芯片判断题疑难点58-65 数字的表示20240512不想学外语的思考判断题疑难点35-42 计算机系统相关【Datasheet】地平线 旭日X3芯片箪食瓢饮。其乐无穷。Zachary Hoskins: Fair Play, Political Obligation, and Punishment节选翻译Android Studio 快捷键大全