问题标签 [textwatcher]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android - 为粘贴文本中的每个字符调用一次 TextWatcher
我已将 TextWatcher 添加到 EditText 并正在通过 onTextChanged(CharSequence s, int start, int before, int count) 方法侦听文本中的更改。当我将包含 10 个字符的文本粘贴到此 EditText 中时,onTextChanged() 会被调用 10 次,对于我粘贴的文本中的每个字符,从左到右调用一次。我希望在将所有 10 个字符都粘贴到 EditText 之后只调用一次 onTextChanged()。我确信这应该是可能的,否则如果它总是为 1,那么拥有“计数”参数有什么意义呢?
android - 仅允许 EditText 中的 1 个字符,并在用户输入时始终覆盖
我需要制作一个EditText
只接受一个字符且只接受一个字符(字母/字母)。如果用户输入其他字符,它应该替换现有的字符(例如用 1 个允许的符号覆盖文本输入的方法)。
我知道如何在属性中设置文本的最大长度。但是,如果我将其设置为 1,则在用户删除现有字符之前无法插入其他字符。但是我想用新输入的字符自动替换现有的字符,而无需手动删除。怎么做?
我知道如何将属性设置为只允许 中的数字
EditText
,但我不知道如何只允许字符。所以第二个问题是如何只允许输入字符EditText
?
目前我正在使用EditText
带有以下代码的最大文本大小= 2:
关键是,当用户输入第二个字符时,应该删除第一个字符。将文本大小设置为 2 允许用户在输入一个字符后输入另一个字符。
我真的不明白它是如何工作的,但它确实:)。此外,我不得不将光标指向EditText
最后一个位置,因为它总是会转到开头,这使得根本无法输入任何内容。也不明白这是为什么。
这个解决方案的要点是它有一个 2-chars 大小EditText
,但我希望它是 1-char 大小。它允许输入除字母(字符/阿尔法)之外的任何内容,我只想要字符。
使用sgarman和Character.isLetter()
function 提供的建议,afterTextChanged
方法现在看起来像这样:
我发现Selection.setSelection
在这种情况下不需要使用。现在它有一个过滤器,只允许输入字母。这几乎就是我想要的答案。剩下的唯一一件事是如何对 1-symbol sized 做同样的事情EditText
?
android - android EditText ,keyboard textWatcher 问题
我正在开发一个 android 应用程序,并且我有一个 EditText,用户可以在其中输入数字。我想使用不同的货币格式(比如##、##、###)来格式化数字,并且我想即时进行,即当用户输入每个数字时(而不是按下输入时)。我四处搜索,发现了TextWatcher,我首先发现它很有前途,但结果证明它绝对是一种痛苦。我在只有软键盘的 HTC Desire 手机上调试我的代码。
现在我想在用户按下数字(0 到 9)、del(退格)键和 enter 键时获得回调。从我的测试中我发现了这些(至少在我的手机上)
1) 当用户按下 del 或 enter 键时调用 editText onKeyListener。当用户按下回车键时,一次回车会调用两次 onKey 函数(我相信这是针对 ACTION_UP 和 ACTION_DOWN 的)。当用户按下 del 时,onKey 被调用一次(仅用于 ACTION_DOWN),我不知道为什么。当用户按下我也无法理解的任何数字(0 到 9)时,永远不会调用 onKey。
2) 每当用户按下任何数字(0 到 9)键时,都会调用 TextWatchers 3 个回调函数(beforeTextChanged、onTextChanged、afterTextChanged)。所以我想通过一起使用 TextWatcher 和 onKeyListener 我可以获得我需要的所有回调。
现在我的问题是这些..
1)首先在我的 HTC 软键盘中有一个键(一个带有向下箭头的键盘符号),当我点击它时,键盘会退出而不给任何回调。我仍然无法相信 android 让用户编辑字段并在不让程序处理(保存)编辑的情况下辞职。现在我的editText显示一个值而我的对象有另一个值(我在输入时保存用户编辑,并通过使用对象中的值重置editText值来处理键盘上的回击,但我对此键盘按下键没有答案) .
2)其次,我想在用户输入新数字后格式化数字。假设我在 editText 上已经有 123 并且用户输入了 4,我希望我的 editText 显示 1,234。我在 onTextChanged() 和 afterTextChanged() 上得到了完整的数字,我可以格式化数字并在任何这些回调中将其放回 editText。我应该使用哪一个?哪个是最佳实践?
3)第三个是最关键的问题。当应用程序启动时,我将当前对象值放在 editText 中。假设我在 onResume() 上放了 123,当用户输入一个数字(比如 4)时,我希望它是 1234。但是在我的 onTextChanged 回调中,我得到的是 4123。当我再按一个键(比如 5)时,我是得到 45123。因此对于用户输入,editText 光标指向文本的结尾。但是当手动设置值时,editText 光标似乎没有更新。我相信我必须在 textWatcher 回调中做一些事情,但我不知道我应该做什么。
我在下面发布我的代码。
我知道这是一个大问题,但我正在处理同样的问题 2 天。我是 android 新手,仍然无法相信没有简单的方法可以即时处理 textEdit 数据(我在 iphone 上轻松地做了同样的事情)。谢谢大家
编辑:使用输入过滤器后
当应用程序启动时,我在 editText 上放置了 1,234
然后当用户单击editText时,键盘弹出,并说用户输入数字6
我得到:61234 我想要:12346
android - 如何将单个 TextWatcher 用于多个 EditText?
我的视图布局中有三个EditText
小部件。TextWatcher
有没有办法对所有三个都使用一个EditTexts
?
android - TextWatcher 在 Emulator/Phone 中的行为不同
我在这样的 EditText 上有一个 TextWatcher
(其中 etSearch 是我的 Edittext etSearch.addTextChangedListener(searchWatcher)
。)
我有一个运行 2.1-update1 的索尼爱立信 Xperia 和一个也运行 2.1-update1 的 AVD。在模拟器中,我单击 EditText,使用软键盘输入 abc,然后按一次 del 按钮。在电话上,我触摸 EditText,在软键盘上键入 abc,然后按一次 del。在电话中,我得到了这个:
在模拟器上,我得到了这个:
为什么他们不一样?哪一个是正确的行为?
android - 如何在可过滤的 ListView 中显示“无结果”?
我有一个ListView
和一个EditText
。我实现addTextChangedListener
了过滤内容。EditText
ListView
然后TextWatcher
是:
健康)状况:
- 我有 10 个项目
ListView
。
问题:
- 当我第一次输入第一个字符时,为什么在 w 中
watcherAdapter.getCount()
返回10
(作为初始值)ListVie
而不是返回的过滤结果计数?watcherAdapter.getCount(
) 中显示的结果似乎迟到了ListView
。 "No Result"
当我在ListView
上键入时没有匹配结果时,我如何实现显示EditText
?
android - 如何删除使用 addTextChangedListener 添加的所有侦听器
我有一个ListView
每行都有一个EditText
控件的地方。我想在TextChangedListener
每一行添加一个;一个包含额外数据的数据,说明该行在哪一行EditText
。问题是当getView
被调用时,TextWatchers
会添加多个;因为convertView
已经有一个TextWatcher
(和一个指向不同行的)。
MyTextWatcher
是我的实现类TextWatcher
;并处理文本事件。CurrentQuestion 让我知道我正在处理哪一行。当我在框中输入时;的多个实例TextWatcher
被调用。
有没有办法TextWatchers
在添加新的之前删除?我看到了该removeTextChangedListener
方法,但这需要传入一个特定TextWatcher
的,而且我不知道如何获取指向TextWatcher
已经存在的指针。
android - How to change TextView text on DataChange without calling back a TextWatcher listener
Consider:
If we add a TextWatcher
to a TextView
, and I want to append a letter to this TextView
, every time the user writes a letter in it, but this keeps calling the TextWatcher
Listener, so on to StackOverFlow error
, so how can I append text without calling the TextWatcher
Listener again?
android - 删除 TextChangedListener 然后重新添加它
因此,我一直在尝试为 Android 实现 TextWatcher,但在多次调用 TextChangedListener 或进入无限循环时遇到了一些问题,因为我想将 EditText 小部件中的文本转换为货币格式的字符串。
我为解决这个问题所做的是创建自己的自定义 TextWatcher,然后在 afterTextChanged 事件中执行如下操作
所以我的问题是,有没有更好的方法来做到这一点?我希望有一个 EditText 小部件来保存编辑所在的位置以及生成的格式化字符串。
实际上还有其他关于删除然后添加这样的 TextChangedListener 的问题吗?
提前致谢
android - 带有 2.3.3 的 Desire Z:TextWatcher 不工作 -> 库存键盘中的错误?
我想我刚刚在 Desire Z(欧洲版)的 2.3.3 版本中遇到了一个非常烦人的错误。使用 HTC 的普通键盘时,TextWatcher 不再工作。它适用于其他设备,例如 Nexus One、三星 Galaxy S、各种模拟器版本,甚至摩托罗拉里程碑。此外,一旦我使用不同的键盘,功能就会恢复。
用法(简而言之)如下所示:
有没有人经历过相同的(令人讨厌的)行为?有没有人有不涉及安装不同键盘的解决方法?
多谢你们