首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EditText:使用自定义的可编辑对象调用setText()时,光标不会更新

EditText是Android开发中常用的一个UI控件,用于接收用户的输入文本。当使用自定义的可编辑对象调用setText()方法时,光标不会自动更新的原因是setText()方法默认会将光标移动到文本的末尾,但是自定义的可编辑对象可能没有实现相应的光标移动逻辑。

为了解决这个问题,可以通过以下几种方式来更新光标位置:

  1. 使用setSelection()方法:在调用setText()方法之后,可以通过setSelection()方法手动设置光标的位置。setSelection()方法接受一个整数参数,表示光标应该出现在文本的哪个位置。例如,如果希望光标出现在文本的开头,可以调用setSelection(0)。
  2. 使用requestFocus()方法:在调用setText()方法之后,可以调用requestFocus()方法请求EditText获取焦点,这样光标就会自动出现在文本的末尾。例如,可以在setText()方法之后调用editText.requestFocus()。
  3. 使用addTextChangedListener()方法:可以通过addTextChangedListener()方法添加一个TextWatcher监听器,在监听器的onTextChanged()方法中手动设置光标的位置。例如,可以在onTextChanged()方法中调用editText.setSelection()来设置光标的位置。

总结起来,为了解决使用自定义的可编辑对象调用setText()时光标不会更新的问题,可以使用setSelection()方法、requestFocus()方法或者addTextChangedListener()方法来手动更新光标的位置。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android端IM应用中@人功能实现:仿微博、QQ、微信,零入侵、高扩展

正如SpannableData所展现一样,当spannedText()返回是一个Spannable对象使用Spanned.SPAN_EXCLUSIVE_EXCLUSIVE作为flag。...似乎我们不能通过setText()添加内容,只能使用getText()追加内容。不仅如此,我们必须完全禁用setText(),因为每一次调用,都会清除掉SelectionSpanWatcher。...这些都可以,唯一缺点是,它不是我想要优雅。我要让它就像使用普通EditText一样正常使用setText()方法。 需要思考问题是,SelectionSpanWatcher在哪里消失了?...当TextView.isTextSelectable()返回true,TextView文本模式; 3)BufferType.EDITABLE EditText文本模式,可编辑,带文本样式。...阅读上面的源码片段,不知道有没有人注意到setText(CharSequence)传入一个CharSequence对象,TextView#getText()返回是CharSequence对象EditText

2.2K30

Android开发笔记(一百四十六)仿支付宝支付密码输入框

编辑EditText算是Android一个基础控件了,表面上看,EditText只负责接收用户手工输入文本;实际上,要把这看似简单文本输入做得方便易用,并不是一个简单事情...当然,在界面展现上,需要以横排方格形式加以显示。于是可以考虑,把支付密码输入与显示操作分离开来,即密码输入操作仍由EditText处理,而密码显示操作则由自定义方格布局接管。...对于处理密码输入EditText来说,需要实现以下几项操作: 1、把默认下划线背景替换为圆角背景,且支持在获得焦点高亮显示; 2、屏蔽输入光标,可调用setCursorVisible方法设置为不可见...,决定当前显示明文还是密文;如果是密文,则显示哪个密文字符; 5、每当EditText文本发生变更之时,相应更新TextView队列各项文本显示; 上述改造内容,大部分都有可以直接调用函数,...其次,对于支付密码输入框焦点获得问题,因为该输入框内部集成了EditText,所以不管是给输入框注册点击事件还是触摸事件,手势焦点都会被内部EditText所抢占,使得密码输入框反而不会响应点击和触摸事件

1.8K30

Android开发笔记(三十六)展示类控件

setHintTextColor : 设置提示文本颜色。 在录入用户信息(比如输入姓名、密码等等),EditText输入回车键,常常不要换行而是让光标直接跳到下一个编辑框。...该功能有两种实现方式: 方式一:给编辑框注册一个OnKeyListener监听器(setOnKeyListener方法),当检测到回车键(keyCode == 66),触发光标跳转操作; 方式二:...给编辑框注册一个TextWatcher监听器(addTextChangedListener方法),当检测到文本发生变化并找到回车换行符,触发光标跳转操作; 2、保持当前控件不换行,依旧单行显示。...et_this.setText(str); 3、光标跳到下个编辑框,并自动挪到编辑框文本末尾。...(); Selection.setSelection(edit, edit.length()); 注意控件之间切换光标使用requestFocus方法,不能使用setFocusable方法(该方法只能切换焦点

1.4K30

Android富文本开发

图片提供按钮操作 软键盘删除键删除图片,也可以删除文字内容 文字可以修改属性,比如加粗,对齐,下划线 根据富文本作出以下分析 使用原生控件,插入图片、文字界面不能用一个EditText来做,需要使用...LinearLayout添加不同控件,图片部分用ImageView,界面滑动最外层使用ScrollView。...如果设置为true则表示decode函数不会生成bitmap对象,仅是将图像相关参数填充到option对象里,这样我们就可以在不生成bitmap而获取到图像相关参数了。...第一次:设置为true则表示decode函数不会生成bitmap对象,仅是将图像相关参数填充到option对象里,这样我们就可以在不生成bitmap而获取到图像相关参数。...第二次:将inJustDecodeBounds设置为false再次调用decode函数就能生成bitmap了。而此时bitmap已经压缩减小很多了,所以加载到内存中并不会导致OOM。

8.5K20

Android自定义控件通用验证码输入框实现

输入框一行输入4位数字类型验证码; 2. 4位数字之间有间隔(包括底线); 3. 输入框不允许有光标; 4. 底线根据输入位置显示高亮(蓝色); 6....输入完成,回调结果,输入过程中,也进行回调; 分析 这种效果,很难直接在Edittext上处理: — 输入框均分4等份,还要有间隔; — 更难处理Edittext输入框禁止光标,那么,没有光标...— 等… 与其在一个控件上折腾,这么难受,不如自定义一个控件,实现这种效果。 自定义控件最简单方案:使用多个控件,组合出这种效果。 1、布局如何实现?...1.禁止光标,我们直接使用TextView就解决了,而非Edittext; 2.一行显示4位数字,比较简单,可以使用线性布局权重,对TextView进行控制为4等分; 3.每个TextView下面跟着一个底线...也很简单,我们在4个TextView上方平铺一个EditText,设置透明, 当用户点击到该控件,会自动调起软键盘,接收输入文本。

1.9K20

Android自定义EditText:手把手教你做一款含一键删除&自定义样式SuperEditText

前言 Android开发中,EditText使用 非常常见 本文将手把手教你做一款 附带一键删除功能 & 自定义样式丰富 SuperEditText控件,希望你们会喜欢。 ?...需要具备功能如下: 一键删除 丰富自定义样式:左侧图标、删除功能图标、分割线 & 光标 样式变化。...特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一键删除功能 在需求中非常常见,现将其封装后更加方便使用 自定义样式程度高(比自带强大 & 方便...),不复杂却能满足一般EditText使用需求 自定义样式如下:(注:该样式设置是系统自带 API 所不具备) ?...具体使用 具体请看文章:Android自定义View:你需要一款简单实用SuperEditText(一键删除&自定义样式) ---- 7.

1.8K30

Android自定义EditText:手把手教你做一款智能EditText(一键删除、自定义样式)

前言 Android开发中,EditText使用 非常常见 本文将手把手教你做一款 附带一键删除功能 & 自定义样式丰富 SuperEditText控件,希望你们会喜欢。...需要具备功能如下: 一键删除 丰富自定义样式:左侧图标、删除功能图标、分割线 & 光标 样式变化。...特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一键删除功能 在需求中非常常见,现将其封装后更加方便使用 自定义样式程度高(比自带强大 & 方便...),不复杂却能满足一般EditText使用需求 自定义样式如下:(注:该样式设置是系统自带 API 所不具备) 3.2 使用简单 仅需要简单xml属性配置 具体请看文章:Android自定义...具体使用 具体请看文章:Android自定义View:你需要一款简单实用SuperEditText(一键删除&自定义样式) 7.

1.2K30

程序正在监听你一举一动?

相信大家在项目中多多少少都用过EditText这个控件吧,但是大家是否熟悉它监听呢?最近阿Q在使用监听过程中就碰到了几个问题,在这里整理一下,供小伙伴们参考。...()为文字显示在EditText操作。...大家应该注意是如果在afterTextChanged()函数中去调用setText()方法,就会去重复调用其前两个方法,造成死循环,直到程序崩溃为止。...所以我们在最后一个方法中要慎用setText(),所以我们只可将特殊情况处理 用setText()来表示。...在使用过程中,如果复用EditText的话,会出现输入数字错乱问题,这时候我们需要加上监听唯一标志,用于区分不同监听,并且监听用完之后要记得移除监听。

39130

Android文件读写和使用SharedPreferences储存数据

主要是一些Java中文件操作,如果不熟悉的话可以去网上找一些教程。在 onDestroy 方法中调用 saveText 来储存 EditText数据。...得到了SharedPreferences对象之后我们就可以利用它进行数据储存了: (1) 调用Sharedpreferences 对象 edit() 方法获取一个SharedPreferences.Editor...对象 (2) 使用SharedPreferences.Editor 对象特性方法储存数据(putString()...) (3) 调用SharedPreferences.Editor 对象apply...R.id.userNameEditText)).setText(userName); ((EditText) findViewById(R.id.passwordEditText)).setText...} } } 主要思想还是通过两个自定义方法实现:login() 方法用于单击“登录”按钮对用户名和密码等信息储存,loadUserInfo() 方法用于恢复用户名和密码等操作

1.9K10

让你EditText删除表情比微信更高效--记一次android性能分析优化实战

前言 自己在做SpEditTool:一个支持表情,@mention,#话题#等功能EditText控件,这个项目的时候出现了一个很奇怪问题 EditText输入表情过多时候,从中间开始删除表情,会出现非常卡情况...之前文章中提到过SpanWatcher继承于NoCopySpan接口,在产生一个新Spannable对象NoCopySpan不会被复制,而ChangeWatcher则实现了SpanWatcher,...() 删除表情后再将SpannableStringBuilder设置给EditText 最后设置光标位置 完成这一系列操作之后demo一跑,删除果然变流畅了,当时心里那个高兴啊,竟然做个功能可以比微信实现还好那么一点...,搜狗输入法也会出现,估计是百度输入法在出现这样情况就把删除按钮触摸事件给中断了 出现上面log原因是因为InputConnection在setText()需要被重新创建,而第二次删除InputConnection...()被调用,谷歌直接简单粗暴用反射获取了ChangeWatcherClass对象,在setSpan()时候发现如果是ChangeWatcher就把它包装在新WatcherWrapper中,所有的操作都通过

1.3K30

webview长按复制_安卓手机怎么复制图片上文字

大家好,又见面了,我是你们朋友全栈君。 有这么一个需求,用户在浏览文本信息希望长按信息就能弹出复制选项方便保存或者在别的页面使用这些信息。...这里面主要是2个特点: 1、用户只能浏览文本信息而不能编辑这些文本信息; 2、用户对着文本信息长时间点按可以弹出”复制” 选项实现复制; 网上有好多种方法实现,也比较零散, 此处做个小结,希望有所帮助...被编辑 return false; } } 上面很关键一个方法是getDefaultEditable(), return false;即禁止EditText编辑,变成了不可编辑EditText,但同时具有...原理如上, 更直白简单方法是直接在xml中使用一个EditText,并且将属性设置为 android:editable=”false” . 2、使用OnLongClickListener 直接使用TextView...点击”复制” 就去获取TextView内容。 当然, 这里只是获取内容,如何将内容放入粘贴管理器还需要一个ClipboardManager 对象。它负责管理复制后粘贴这件事。

3.6K20

微博文本编辑和显示(emoji表情,@某人、链接高亮点击)

日常开发过程中我们经常会需要实现类似微博文本输入框,可以自定义emoji、@某人高亮显示、快捷删除、文本显示表情、@人和链接点解等效果。...】其他APP做法,一般文本使用[xxx]这样方式,表情也是对应使用xx1-xxx100这样命令,可以方便操作,这样我们就得到了一个关联了表情和文本Map了\(o)/目前还不能吃。...()); return spannableString; } EditTextAtUtils 处理@某人逻辑 这里需要实现编辑文本框中需要实现@某人显示,类似微博Android...EditText在点击时候我们可以获取到光标落下位置,这时候我们通过该位置去已有@list列表里判断每个名字所在位置,比对光标位置是不是落在了@块内,如果是就强行将光标落到@块旁边(= =光标不能插进来...这里不用普通span,直接使用Html.fromHtml来达到文本变色效果,将@名字插入到spannableStringBuilder光标的位置中,再在后面补上一个\b。

2.1K20

手机卫士黑名单功能(ListView结合SQLite增删改)

添加记录 调用Builder对象show()方法,获取AlertDialog对象 调用View.inflate()方法,将布局文件转成View对象 调用View对象findViewById()方法,...,数据库增加一条记录,参数:String电话号码,String拦截模式 此时ListView并不会显出出来刚添加记录,需要退出这个Activity重写进入,我们通知适配器数据更新 调用集合List对象...add()方法,添加一条数据,参数:0(第一个),数据 调用ListAdapter对象notifyDataSetChanged()方法,通知数据更新 删除记录 条目布局文件中,在右侧放置一个垃圾桶小图标...,它所在包是DialogInterface.OnClickListener 调用之前定义好Dao类BlackNumberAdo对象delete()方法,参数:String电话号码 调用集合List...对象remove()方法,删除一条数据,参数:int索引 调用ListAdapter对象notifyDataSetChanged()方法,通知数据更新 CallSmsSafeActivity.java

87330

高仿Android「填空题」控件:手撸一个炫酷View动效!

但是,他们都存在一些问题,比如 1.非嵌入式输入,需要在外部提供一个输入EditText 2.虽然是嵌入式输入,但是可编辑文字必须要固定长度,不能根据文字长短动态变化 总而言之,就是体验还是不够好...,我们很少自己去定义一个控件,而是直接使用EditText,以至于我们几乎认为只有EditText可以接收输入法输入。...光标结束位置x坐标和起始位置相同,y坐标则为其实坐标加上文字高度 3)考虑多类型输入时光标位置 当输入文字包含汉字、英文、数字,由于英文/数字占位比汉字小,此时,如果按照汉字单字来计算光标所在文字索引...自定义控件嘛,每个人去实现时候,都会有不一样做法,比如上面计算光标实际位置方法,肯定会有不同更好方法。所以,了解实现思想和借助工具方法即可,没必要太过较真。...最后还一些边边角角小功能,比如自定义一些可配置属性:文字颜色,字体大小,可编辑字段格式,光标颜色等等;比如根据文字高度,自适应控件高度;比如输入法弹出和隐藏...... 不再细提,具体可看源码。

1.6K30

EditText 集锦 - 开发中常用用法及遇到各种坑

同时,本文章会持续更新,建议收藏起来。...主题中 “colorAccent”颜色. textCursorDrawable //设置被光标的颜色.默认为 Theme 主题中 “colorAccent”颜色. android:textScaleX...:editable //设置EditText是否可以编辑.当你设置为true,会提示你该EditText已经是可编辑.设置为false时会提示使用inputType替代. android:inputType...如设置成1.5倍. ---- 输入法相关 设置默认输入法 有时候为了提高用户体验,在弹出输入法需要设置默认输入状态,比如单词应用弹出输入法,输入法最好是在英文输入状态下。...,就是当你 text 超过 30 个字符时候,你调用 mEtText.setText ,这时候会报错。

2.2K20

Android EditText每4位自动添加空格效果

看似很小功能,在开发过程中,遇到了非常多问题与难点: EditText输入框监听死循环 输入框中空格无法删除(删除又添加) 从中间删除一个数字产生一系列问题 输入框光标位置控制问题 之前踩坑过程就不再赘述了...用这种拼接字符方法是为了解决当用户删除中间数字,会导致空格位置错位问题。 当用户删除中间字符,要记录该动作并且记录光标位置,保证重新排序完成后,光标的位置在应该在位置。...etContent.equals(newContent)) { et_credit_number.setText(newContent); //保证光标在最后,因为每次setText都会导致光标重置...现在我们就要进行第二步,当用户删除中间字符,我们要判断用户本次操作是删除字符,并且保存本次删除光标位置,在删除完成、排序完成之后,将光标移动到保存光标位置。...,判断用户操作是删除操作,保存光标的位置。

1.6K30

Android开发之漫漫长途 番外篇——自定义View各种姿势1

读者试着去除onMeasure方法或者onDraw方法中对padding处理看看效果 自定义属性xml <?xml version="1.0" encoding="utf-8"?...以我们上面的CircleView为例,,我们在布局文件中定义了一个LinearLayout并在LinearLayout内使用了我们自定义CircleView,那么按照上一章讲解ViewRootImpl...(要理解Android View层级结构是树结构) ---- 第2种自定义View姿势——直接继承自Android中控件View,如TextView或者EditText等。...继承自EditText image.png image.png 如上图,在作为手机号或者银行卡输入数字会按照不同规则分段,并且右侧出现清空按钮。...可以看到我们继承自这些系统控件,并单独没有实现对wrap_content和padding支持(后面的自定义EditText不实现onMeasure方法也不会对wrap_content和padding

76410
领券