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

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

那么,为了禁止中间插入,我们应该怎么做呢? 这个需求又产生了两个问题: 1)当普通文本发生变化后,如何监控一个Span起始位置发生变化? 2)如何禁止Span内部插入光标?...第二个问题,我们要保证文本与数据的一致性,禁止光标插入到Span覆盖的文本中间。...4、微博的做法 4.1 侦听并处理光标活动、选中状态以及Span位置变化 对于光标活动和选中状态侦听,如果采用继承EditText的方式实现标签文本功能,重写onSelectionChanged(int...; 2)光标是一种特殊的选中状态,start与end在同一位置。...或者用内联方法继承的方式为EditText新增一个方法? 这些都可以,唯一的缺点是,它不是我想要的优雅。我要让它就像使用普通EditText一样正常使用setText()方法。

2.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

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

输入框不允许光标; 4. 底线根据输入位置显示高亮(蓝色); 6....输入完成,回调结果,输入过程中,也进行回调; 分析 这种效果,很难直接在Edittext上处理: — 输入框均分4等份,还要有间隔; — 更难处理的是Edittext输入框禁止光标,那么,没有光标...1.禁止光标,我们直接使用TextView就解决了,而非Edittext; 2.一行显示4位数字,比较简单,可以使用线性布局的权重,对TextView进行控制为4等分; 3.每个TextView下面跟着一个底线...我们监听EditText按键事件,拦截DEL键,从后向前挨着删除字符即可; 底线也随要删除的文本切换显示高亮; 5、是否需要自定义属性 分析我们自己的项目,虽然是公用的控件,但是该控件比较简单,没有特别的要求...如果大家有需要的,可根据需要自己定义; 如何定义属性?请自行查找资料; 既然,问题都分析清楚了,那我们就开始快速实现吧 具体实现 布局文件 phone_code.xml <?

1.8K20

真·富文本编辑器的演进之路-Span的整体性控制

所以,我们需要对Span做下面的限制: 中间不允许光标插入 增加时整体新增 删除时整体删除 对应这样的需求,我们有两种方式来处理,第一种是使用原本就是整体的Span,例如ImageSpan,这是最简单的方法...控制选中 在讲解如何在普通文本中对Span做整体性控制前,我们先来考虑下选择的问题——如何让「整体性Span」的内部无法被选中。 首先,我们要知道,Edittext光标也是一种Span。...也就是说,我们可以通过监听光标的移动事件,通过Selection实现当光标移动到Span内部时,让它重新移动到Span最近的边缘位置,从而让Span内部永远无法插入光标,这就是我们的主要思路。...那么问题来了,我要怎么监听Edittext光标呢?...Edittext提供了Editable.Factory来自定义添加SpanWatcher,我们只需要在初始化的时候传入即可,代码如下所示。

1.9K30

详解EditText输入监听TextWatcher「建议收藏」

日常开发中,我们可能会遇到需要监听EditText输入,比如判断输入是否为电话号码,获取输入的数据长度来限定字数等。这就需要监听EditText的输入状态。..."> <EditText android:id="@+id/phone_number" android:layout_width="368dp" android:layout_height=...意思大概是: 这个方法用来通知你,在字符串s里,光标start开始处的count个字符将要被after长的字符代替,禁止在这个回调里改字符串s。可以理解成提醒你你做了什么操作。...afterTextChanged(Editable s) { } 分别输入一个字符、二个字符、删除一个字符的截图 这样理解: 这个方法执行获取的状态是在你输入前光标所在位置...我们刚刚输入的你字是不是还在,这就是s的内容; 开始处:光标所在位置1; 替换长度:0,为什么还是0?

2.6K31

Android软键盘输入处理技巧

今天我们来讨论一下Android中监听软键盘输入的使用方式。它允许用户输入文本和执行其他操作。但是,有时候我们需要在用户输入文本时进行一些特殊的处理,比如实时验证输入内容、限制输入字符的类型等。...如何监听软键盘输入 在Android中,我们可以使用EditText的TextWatcher接口来监听软键盘输入。...它允许应用程序与用户输入进行交互,并处理输入文本的各种操作,如插入、删除和替换文本。 InputConnection 是 Android 软键盘系统和 EditText 控件之间的桥梁。...它允许您: 监听用户的输入操作,如按键、删除等。 拦截并自定义文本输入。 实现撤销、重做和自动修复等功能。 与 EditText 控件进行通信,以控制光标位置、文本选择和其他编辑操作。...监听软键盘输入 要监听软键盘输入,首先需要获取 InputConnection 对象,通常在 EditText 控件上调用 onCreateInputConnection 方法。

26510

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

3、在代码中设置某控件为可见不可见消失,此时需要使用View类的三个变量,分别是View.VISIBLE、View.INVISIBLE和View.GONE。...聊天室窗口的高度是固定的,新的文字消息总是加入到窗口末尾,同时窗口内部的文本整体向上滚动,而窗口的大小保持不变、位置也保持不变。...3、对该控件(视图)截图。需要先设置绘图缓存可用,然后取出该控件的绘图缓存完成截图操作。...maxLength : 指定文本允许输入的最大长度。该属性无法通过代码设置。 hint : 指定提示文本。 textColorHint : 指定提示文本的颜色。...EditText还有一个需要特殊处理的地方,就是自动关闭软键盘。一般我们希望点击其它控件时,原输入框的软键盘就要自动消失,可惜Android不是这样处理。

1.4K30

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

1)绘制 普通的EditText在输入时,都会有一个光标,用于表示输入删除的位置。...,控制线条的显示和隐藏即可。...关键在于,如何确定光标位置。 2)计算纯汉字输入时的光标位置 还记得上面2点,实现可编辑字段的点击吗?...说明:这里的index,指的是文字在可编辑字段中的位置,也就是光标位置 光标起始位置的y坐标,就是被触摸的可编辑字段的y坐标。...光标结束位置的x坐标和起始位置相同,y坐标则为其实坐标加上文字高度 3)考虑多类型输入时的光标位置 当输入的文字包含汉字、英文、数字时,由于英文/数字的占位比汉字小,此时,如果按照汉字的单字来计算光标所在文字的索引

1.6K30

Android初级】教你用两行代码实现“显示隐藏密码”的效果

用户的密码是极为隐私的,用户在输入时不希望密码被别人看到,所以几乎所有需要输入密码的场景下都会把密码隐藏起来,显示成一串的黑点。今天我们就来看下如何实现这个能动态显示密码和隐藏密码的效果。..."> <EditText android:paddingTop="20dp" android:layout_width="match_parent"...细心的你会注意到,每次显示密码隐藏密码后,光标自动移动到最开始的位置了。...为了解决这个问题,我们要在 CheckBox 的stateChange事件后,手动将光标移动到末尾,在 onCheckedChanged 的后面添加如下代码: // 切换后将 EditText...的光标置于末尾CharSequence charSequence = editText.getText();if (charSequence !

1.8K10

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

前言 EditText ,文本输入框,一个再熟悉不过的的控件,在开发当中,我们需要经常用到。这边文章,主要是记录 EditText 的常用用法,需要的时候可以直接复制张贴,提高效率。...(加粗),italic(倾斜),normal(默认是正常字体). android:numeric //控制EditText输入数字的类型 decimal(浮点数),integer(正整数),signed...,建议使用android:inputType属性替代. android:textAlignment //设置EditText中文本显示的位置,center(居中),inherit(默认,居左边显示),viewStart...:textColorHighlight //设置被选中字体的颜色.默认为 Theme 主题中的 “colorAccent”的颜色. textCursorDrawable //设置被光标的颜色.默认为 Theme...,禁止输入中文等,这时候,可以使用 editText.setFilters(filters) 的方法。

2.2K20

Android富文本开发

更详细的来说,监听删除键的点击的逻辑需要注意,当光标EditText 输入中间,点击删除不进行处理正常删除;当光标EditText首端,判断前一个控件,如果是图片控件,删除图片控件,如果是输入控件,...对于上面两个问题,这个位置可以取光标所在的位置,但是对于一个EditText输入文本,插入图片这个位置可以分多种情况: 如果光标已经顶在了editText的最前面,则直接插入图片,并且EditText下移即可...如果光标已经顶在了editText的最末端,则需要添加新的imageView 如果光标已经顶在了editText的最中间,则需要分割字符串,分割成两个EditText,并在两个EditText中间插入图片...在文字内容中间插入图片,则需要分割字符串,分割成两个EditText,并在两个EditText中间插入图片,那么这个光标又定位在何处呢?...:软键盘不弹出,光标显示在第一个输入框中) 需求2:editText不获取焦点,当然软键盘不会主动弹出(光标也不显示) 在第一个输入框的最直接父布局加入:android:focusable="true"

8.4K20

Android自定义支付密码输入框,光标问题总结!

前言 在项目中我们常常继承AppCompatEditTextEditText自定义验证码输入框来代替系统输入框,以满足UI设计需求,如: 直线形输入框 方形输入框 | image.png...左右被调用一次 image.png 此处先给出解决办法: *当我们继承EditText自定义验证码输入框后,EditText自带的光标对我们来说不可见,已经没有意义,因此需要将其隐藏掉,防止onDraw...虽然EditText自带的光标已经不能满足我们的需求,但我们可以参考其光标闪烁的源码,然后修改一下来满足我们的需求,重点是修改光标绘制时的显示位置 在控件可见时开启光标闪烁,控件不可见时取消光标闪烁 override...类中copy过来,此处不再贴代码了 在onDraw方法里绘制光标,重点是计算光标显示位置 private fun drawCursor(canvas: Canvas) {         if (!...类中光标闪烁代码,修改光标显示位置相关代码,即可实现光标闪烁效果 GitHub 本文相关代码可在GitHub上获取,地址如下: https://github.com/kongpf8848/ViewWorld

1.3K20

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

前言 Android开发中,EditText的使用 非常常见 本文将手把手教你做一款 附带一键删除功能 & 自定义样式丰富的 SuperEditText控件,希望你们会喜欢。 ?...需要具备的功能如下: 一键删除 丰富的自定义样式:左侧图标、删除功能图标、分割线 & 光标 样式变化。...3.2 使用简单 仅需要简单的xml属性配置 具体请看文章:Android自定义View:你需要一款简单实用的SuperEditText(一键删除&自定义样式) 3.3 二次开发成本低 本项目已在 Github...动态设置光标 // 1....具体使用 具体请看文章:Android自定义View:你需要一款简单实用的SuperEditText(一键删除&自定义样式) ---- 7.

1.8K30

Android EditText详解

[68485207.png] 还不赖是吧,当然,不会在这里贴布局,这里只介绍默认提示文本的两个控制属性: 默认提示文本的两个属性如下: android:hint="默认提示文本" android:textColorHint...2.获得“焦点”后全选组件内所有文本内容 当我们想在点击输入框获得焦点后,不是将光标移动到文本的开始或者结尾;而是 获取到输入框中所有的文本内容的话!...效果图: [42111410.gif] 3.限制EditText输入类型 有时我们可能需要对输入的数据进行限制,比如输入电话号码的时候,你输入了一串字母,这 显然是不符合我们预期的,而限制输入类型可以通过...另外很多时候我们可能要限制EditText允许单行输入,而且不会滚动,比如上面的登陆界面的 例子,我们只需要设置 android:singleLine="true" 即可实现单行输入不换行 5.设置文字间隔...:每一个单词首字母大小,用空格区分单词 characters:每一个英文字母都大写 6.控制EditText四周的间距与内部文字与边框间的距离 我们使用margin相关属性增加组件相对其他控件的距离,比如

1.6K20

Android 通过 xml 和 Java 两种方式调整 EditText 光标样式

和尚我有个小需求是根据主题配色更改 EditText 中输入框光标的颜色,网上查了一些资料,大部分都是直接用的 xml 方式在做调整,但是和尚我需要的是在 Java 代码中动态调整光标颜色。...,色值 #13B7F6" /> 设置一个 EditText,通过更改 xml 方式调整光标颜色,其中 android:textCursorDrawable 属性来设置 shape 光标样式,shape...EditText xml 中默认设置一个 android:textCursorDrawable="@drawable/editext_cursor" 样式,之后在 Java 代码动态修改光标颜色和宽度...添加一个测试 EditText,Java 动态修改光标宽度,仅需调整 size 属性即可; ?...,同一个页面中所有的 EditText 光标样式,会以最后一次设置的为准。

3.3K41
领券