关于EditText的一点深入的了解

      最近在开发android下的记事本程序时,频繁的使用EditText控件,折腾来折腾去,算是对其的了解更深入了一些。特将这些收获记录如下:

一、几个属性的介绍

android:gravity="top"     

这个属性为top可以将光标置于左上角(当EditText设为全屏时)

android:background="@null"    

这个属性为null可以将输入的框线去掉

android:textCursorDrawable="@drawable/ic_launcher" 

这个属性可以设置光标为drawable样式(可以为一张图片)

android:editable="false" 

这个属性为false,则EditText不可编辑。注意是仅仅不能进行输入,但是EditText的滚动什么的还是可以响应的。

 android:enabled="false"

这个属性为false,则EditText也是不可编辑。注意不仅不可编辑,连滚动什么的都不可以响应,所以可以说是直接让EditText不可用。

 android:cursorVisible="false“

这个属性为false,则EditText的光标不可见。

android:focusableInTouchMode="false"

这个属性为false,则EditText不响应触摸模式的焦点,或者说触摸事件不可用。

 

===========================================================================================

 

二、监听EditText的输入

    可以使用TextWatcher来监听EditText的输入。使用方法如下:

Et.addTextChangedListener(new TextWatcher() {
             //S:变化后的所有字符;start:字符起始的位置;before: 变化之前的总字节数;count:变化后的字节数
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
       //s:变化前的所有字符; start:字符开始的位置; count:变化前的总字节数;after:变化后的字节数
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }       //s:变化后的所有字符 public void afterTextChanged(Editable s) { } });

 

      因此如果有需要,或者对EditText做一些个性化的设置,即可以使用addTextChangedListener来为EditText添加监听器!

 

=========================================================================================

 

三、制作只读的EditText控件

      首先说明一下需求:该EditText只会禁止输入,但是可以查看,滚动和触摸什么的都会响应,也就是说仅仅是禁止输入而已!不妨称之为只读模式。

     怎么制作出一个这样子的EditText呢?网上有很多办法,我几乎都一一试过,但是所使用的方法都无法达到满意。比如:

(1)如果通过设定android:editable属性来使EditText不可输入。这个虽然能完美的达到要求。但是,当EditText又需要恢复可输入状态时,没有相应的动态代码来恢复!

(2)如果使用android:enabled属性,则会使EditText整个不可用,也就是说不仅不可输入,连滚动什么的都不用了。

     最后,理了理思路,终于解决了这个问题。达到我的预期:即EditText只读模式达到了,在恢复其可编辑状态时也能很容易的恢复。

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

我的做法如下:

制作出一个只读模式的EditText

其实很简单进行下面两步设定即可:
(1)只读模式,当然不需要显示光标了。在xml中设置如下即可:
 android:cursorVisible="false“
(2)只读模式当然不需要弹出输入法了,输入法不弹出,当然就不能编辑了。为了点到EditText不让弹出输入法,我们只需让其对触摸事件不响应即可:
android:focusableInTouchMode="false"

经过上面两步简单的设定,就可以让EditText为只读模式了。


然后恢复EditText为可编辑:

根据上面的设定,因此想要将EditText恢复为可编辑状态,只需要下面两行代码即可:
editText.setFocusableInTouchMode(true);
editText.setCursorVisible(true);
 

 

 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

   另外需要说明的是,也可以利用下面的方法动态的设定EditText的可输入与不可输入状态。

   动态设定EditText不可输入任何字符

 

//设置EditText不可输入。但保留滑动,可点击等属性。只是不可输入而已
        et.setFilters(new InputFilter[] { new InputFilter() {
            
            @Override
            public CharSequence filter(CharSequence source, int start,
                    int end, Spanned dest, int dstart, int dend) {
                return source.length() < 1 ? dest.subSequence(dstart, dend) : "";
            }
            } });

 

 

这样,利用上面的代码,即使你利用输入键盘输入,也无法输入到EditText中。对应的,相应的恢复输入可采用下面的代码:

 

 

//设置输入法可以输入(或者叫恢复输入)
            et.setFilters(new InputFilter[] { new InputFilter() {
                
                public CharSequence filter(CharSequence source, int start,
                        int end, Spanned dest, int dstart, int dend) {
                    // TODO Auto-generated method stub
                    return null;
                }
                } });

 

 

 

 

=================================================================================

 

四、不自动弹出输入法的键盘

      当你的布局中含有一个EditText中的时候,你会发现只要你进入这个活动的界面,输入法键盘就会自动弹出来。在你不打算首先给EditText做输入的时候,

这个自动弹出的输入法则是非常惹人讨厌的!因此可以利用下面的两种办法来禁止因为有了EditText而自动弹出输入法:

(1)方法一
经过测验,如果EditText和TextView在一起的话,那么输入法就不会自动弹出。这是由于TextView本身的特性导致的。顺便说一句,EditText本身就是继承自TextView的。
因此,你可以放一个TextView到你的布局中,来防止自动弹出输入法。
(2)方法二
还可以利用代码动态设定不弹出输入法。只需要在合适的地方,写下下面的代码即可。下面的代码就是让EditText默认不显示软键盘,只有当被点击的时候才会显示出软键盘
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
                WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

 

 

=========================================================================================

 

 五、设置EditText显示为密码格式

 

     有两种方式,即在xnl中和利用代码动态设定。如下:

(1)方式一
android:inputType="textPassword"
(2)方式二
edit.setTransformationMethod(PasswordTransformationMethod.getInstance());

 

 

   inputType即为输入字符的类型。在这里网上有个很好的总结,如下:

 1 android:inputType参数类型说明
 2 android:inputType="none"--输入普通字符
 3 android:inputType="text"--输入普通字符
 4 android:inputType="textCapCharacters"--输入普通字符
 5 android:inputType="textCapWords"--单词首字母大小
 6 android:inputType="textCapSentences"--仅第一个字母大小
 7 android:inputType="textAutoCorrect"--前两个自动完成
 8 android:inputType="textAutoComplete"--前两个自动完成
 9 android:inputType="textMultiLine"--多行输入
10 android:inputType="textImeMultiLine"--输入法多行(不一定支持)
11 android:inputType="textNoSuggestions"--不提示
12 android:inputType="textUri"--URI格式
13 android:inputType="textEmailAddress"--电子邮件地址格式
14 android:inputType="textEmailSubject"--邮件主题格式
15 android:inputType="textShortMessage"--短消息格式
16 android:inputType="textLongMessage"--长消息格式
17 android:inputType="textPersonName"--人名格式
18 android:inputType="textPostalAddress"--邮政格式
19 android:inputType="textPassword"--密码格式
20 android:inputType="textVisiblePassword"--密码可见格式
21 android:inputType="textWebEditText"--作为网页表单的文本格式
22 android:inputType="textFilter"--文本筛选格式
23 android:inputType="textPhonetic"--拼音输入格式
24 android:inputType="number"--数字格式
25 android:inputType="numberSigned"--有符号数字格式
26 android:inputType="numberDecimal"--可以带小数点的浮点格式
27 android:inputType="phone"--拨号键盘
28 android:inputType="datetime"
29 android:inputType="date"--日期键盘
30 android:inputType="time"--时间键盘

 

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

在这里再插一句吧。说一下EditText或者TextView中的setInputType和setTransformationmethod方法。

 

(1)setinputType可以设置EditText(TextView也可以)的输入方式。比如Contact、Email、Date、Time、Short Message、Normal Text、Password 等。

还可以指定各种更正选项,如 单词首字母大写、句子首字母大写、自动更正等。下面的代码是一个使用范例:

 int inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
                      | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
                      | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE;
      EditText.setInputType(inputType);

 

(2)setTransformationMethod 则可以支持将输入的字符转换,包括清除换行符、转换为掩码。使用方法:

 textView.setTransformationMethod(PasswordTransformationMethod.getInstance());

综合来说,如果需要实现自己的转换,可以通过实现 TransformationMethod 接口来达到你的目的(比如让输入的所有字符都变成 a,或者输入 a 显示 z,输入 z 显示 a 等)。

 

=========================================================================================

 

转载于:https://www.cnblogs.com/fuly550871915/p/4977739.html

myfedit 记事本 很好用的记事本 可以用来记录有用的信息~~~~~~~~~~~~~~~~~~~~~ 立即下载

相关推荐

记事本editplus编辑器正式版

很好的编辑器,比记事本好用很多,排版都OK, 一直都用它

android 代码设置inputtype,EditText 设置inputType

在Android开发过程中,我们经常使用到EditText控件,并且会根据各种需求设置它的输入类型。设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置。下面将介绍这两种方法:(1)使用EditText的setInputType()方法设置输入类型:''' ''''EditTe...

weixin_39699163的博客 619

DLL导出函数名隐藏实战:三种方法保护代码安全

在Windows软件开发中,动态链接库(DLL)的导出函数名是模块间通信的关键标识,也是逆向工程的重要突破口。理解PE文件格式中的导出表结构是掌握DLL工作原理的基础,它记录了函数地址、名称和序号的映射关系。通过隐藏或混淆这些导出名称,可以有效增加代码分析的难度,提升软件的知识产权保护和安全性。这一技术在软件保护、游戏反作弊和安全组件中具有重要价值。本文聚焦DLL导出函数名隐藏,结合Dependencies工具分析,详细解析仅序号导出、导出转发器和运行时动态修改三种实用方案,为开发者提供从原理到实践的完整指

weixin_29315091的博客 307

android 代码设置inputtype,android – 如何正确设置EditText的InputType?

我希望我的EditText内容类型为数字.我根据reference将InputType设置为2.但是仍然可以输入任何字符.final EditText input = new EditText(this);input.setRawInputType(InputType.TYPE_CLASS_NUMBER);我在这做错了什么?我不能使用XML,但我有一个带有android:inputType =“n...

weixin_30051655的博客 858

1、STVD和STVP的使用及串口烧写程序教程

文章目录一、前述二、STVD的使用三、STVP的使用1、STVP的作用:2、STVP的使用四、串口烧录程序 一、前述 STVD是意法半导体推出的,可以支持STM8和STM32 而IAR不尽如此,还支持51,MSP430等芯片 软件开发环境:编写程序,调试软件功能,下载固件到单片机中 硬件开发环境:连接外围电路,驱动功能外设,实现电气功能 最终构成一个以STM8系列单片机作为控制核心的应用系统。 MCS-51 一般的开发环境是 IAR 和 Keil STM8 一般的开发环境是 IAR 和 ST

Clichong 1万+

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8888

安卓框架,新增一个EditText的inputType类型

有个需求需要在全键盘时可以用代码设置时优先显示字母还是数字,其实inputtype:datetime时就是优先数字,就是这样设置输入的标点符号会被过滤,这就需要新增一个inputType了。 首先看TextView的源码 一:找到inputType 的来源 1.来自xm case com.android.internal.R.styleable.TextView_inputType: ...

u013762045的博客 1210

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

【Android】关于Android控件EditText的属性InputType的一些经验

【Android】关于Android控件EditText的属性InputType的一些经验   关于Android控件EditText的属性InputType的一些经验   来源:http://blog.163.com/inflexible_simple/blog/static/16769468420131014382424/ 1、InputType

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 1326

nvidia系列教程-AGX-Orin系统刷机及备份

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷机和备份操作。本文将详细介绍如何完成这些操作,帮助您更好地管理和维护 AGX Orin 设备。通过以上步骤,您可以成功地为 NVIDIA AGX Orin 刷写系统并创建备份。这些操作不仅能帮助您保持系统的更新和安全,还能在遇到问题时快速恢复系统。

flypig has a dream! 3323

Android面试必考问题:Android性能优化最全面试题及参考答案(8万字长文)

Android 中的 OOM(Out Of Memory,内存溢出)异常是指应用程序在运行过程中,由于申请的内存空间超过了系统所能提供的最大内存限制而导致的错误。在 Android 中,内存泄漏是指应用中的某些对象在不再被使用后,仍然被其他对象持有引用,导致这些对象无法被垃圾回收器回收,从而占用内存空间,随着时间的推移可能会导致应用内存不足,甚至崩溃。在一次开发 Android 应用的过程中,我发现应用在长时间运行后会出现内存占用过高的情况,导致应用变得卡顿,甚至可能会被系统强制关闭。

大模型大数据攻城狮的专栏 2531

android常用布局

布局: 在 android 中我们常用的布局方式有这么几种: 1.LinearLayout ( 线性布局 ) : (里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) 线性布局分为水平线性和垂直线性二者的属性分别为: android:or...

chuilichou5586的博客 304

Open3D 合并两个点云【2025最新版】

两个点云中的数据连接,博客长期更新,本文最新更新时间为:2025年4月26日。

点云侠的博客 7435

EditText的一点深入的了解

最近在开发android下的记事本程序时,频繁的使用EditText控件,折腾来折腾去,算是对其的了解更深入了一些。特将这些收获记录如下: 一、几个属性的介绍 android:gravity="top" 这个属性为top可以将光标置于左上角(当EditText设为全屏时) android:background="@null" 这个属性为null可以将输入的框线去掉 ...

weixin_30699831的博客 113

Python爬虫:抓取外卖平台餐厅菜单、价格与评价数据

美团外卖:国内领先的外卖平台之一,提供餐饮外卖、超市配送等服务。饿了么:另一大主流外卖平台,覆盖广泛的餐饮品类。等:国际性的外卖平台。在本文中,我们将以美团外卖为例,展示如何抓取餐厅的菜单、价格和评价等数据。我们会使用Python的爬虫库,如Scrapy和Selenium,来解决抓取任务。本文详细介绍了如何使用Python爬虫抓取外卖平台上的餐厅菜单、价格、评价等信息。我们展示了如何使用Scrapy和Selenium抓取静态与动态网页数据,如何清洗和存储数据,并讨论了如何应对外卖平台的反爬虫机制。

2201_76125261的博客 1498

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Android】EditText 遇到软键盘遮挡底部一点的问题

1.问题描述:    项目中某个布局文件(布局相当复杂)添加EditText输入框,在清单文件对应activity中设置属性   android:windowSoftInputMode="adjustResize"  ,弹出软件盘不存在遮盖问题。但是一旦给这个EditText设置背景之后就会出现EditText底部被遮盖的情况。如下图: 目前还没有找到原因。但是自己写demo时就不会出

小牛的专栏 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android EditText 常用属性总结

所有属性: android:hint="请输入数字!" //设置显示在空间上的提示信息 android:numeric="integer" //设置只能输入整数,如果是小数则是:decimal android:singleLine="true" //设置单行输入,一旦设置为true,则文字不会自动换行。 android:gray="top" //多行中指针在第一行第一位置 et....

qq_27494201的博客 1675

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android edittext怎样获取输入的内容,如何获取edittext中输入的内容?

如何获取edittext中输入的内容?十一是遗憾,十二是难忘,而你是十三,遗憾也难忘。安卓中获取EditText中输入的内容,方法如下: editText.getText(); //返回值类型为EditableeditText.getText().toString(); //转换为String数据,方便操作 EditText输入内容的形式有很多,如:Plain Text、Person Name、P...

weixin_39865440的博客 1万+

Android 实现EditText只读

问题描述 先说一下问题,一种比较直观的方式来实现EditText控件只读,不可编辑的方式是,在xml文件中设置&amp;quot;editable&amp;quot;参数,这个在控件的attributes中也有,可以勾选,设置editable=false就可以了,但是 正如图片所示,现在editable选项已经deprecated(被弃用)了,IDE建议我们用inputType选项来实现这一功能。之所以被弃用是因为有一种更好的方式...

沈子鸣 7671

edittext 监听无效_()editText焦点监听不起作用

(求助)editText焦点监听不起作用想对一个editText做焦点监听,在输入完后,点击其他地方自动隐藏输入法editText.setOnFocusChangeListener(newandroid.view.View.OnFocusChangeListener(){@OverridepublicvoidonFocusChange(Viewv,booleanhasFocus){...

weixin_29432775的博客 823

android中使用 EditText 时,设定 inputType的一点说明

开发的过程中,通常会用到EditText,如何让虚拟键盘来适应输入框中内容的类型,通常我们都会在xml文件中加入android:inputType=""。 android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"//前3个输入普通字符android:inputType="te

myKernel 939
上一篇: 用户和用户组
下一篇: android中的事件传递和处理机制
bai8005
博客等级 码龄11年 7粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值