Articles of textwatcher

在Android中使用千位分隔符(,)键入时如何格式化EditText的input?

我有一个edittext ,它只能得到没有十进制数字的数字。 android:inputType="number" 我打字的时候要分开数千个。 例如25,000。 我知道我应该使用TextWatcher ,我已经使用这个代码,但我不能让它工作: @Override public void afterTextChanged(Editable viewss) { String s = null; try { // The comma in the format specifier does the trick s = String.format("%,d", Long.parseLong(viewss.toString())); } catch (NumberFormatException e) { } } 你能帮我这么做吗?

使用TextWatcher进行EditTextvalidation

我有一个EditText和一个button的对话框。 这个EditText将命名我将创build的数据库表,所以它的validation是至关重要的。 所以我想提出两个问题: 1)这很简单,但我无法在任何地方find它:数据库表名可以接受哪些字符? 它可以接受数字吗? 而且可以成为第一个字符吗? 2)我设法使用TextWtachervalidationEditText 。 代码如下: et_name.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { String filtered_str = s.toString(); if (filtered_str.matches(".*[^az^0-9].*")) { filtered_str = filtered_str.replaceAll("[^az^0-9]", ""); s.clear(); // s.insert(0, filtered_str); Toast.makeText(context, "Only lowercase letters and numbers are allowed!", Toast.LENGTH_SHORT).show(); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public […]

如果用户按下空格,如何从edittext立即删除空格?

我有一个edittext,还有一个看着SPACE是否到达的textwatcher。 如果它是一个空格,我想立即删除它。 或者,如果它的空间我想确保它不出现,但以某种方式表示(seterror,吐司)为用户的空间是不允许的。 edittext.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { //—// } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {} }); 我无法在afterTextChaned方法中定义onkeydown,因为它给了我一个错误。 public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); if (keyCode == KeyEvent.KEYCODE_SPACE) { } } 所以它不工作(语法错误,错误的int keyCode […]

如何在Android应用程序中使用AsYouTypeFormatter TextWatcher?

我正在尝试使用Google的libphonenumber中的AsYouTypeFormatter和TextWatcher,我不确定是否有可能。 我已经能够格式化从EditText字段input文本,并在另一个EditText输出,但不能直接更改原始EditText字段(这是我想要的)。 我知道phoneNumberFormattingTextWatcher,但是我们希望用户能够最终select它们所在的区域,并且比使用允许的更多的控制(从我所收集的)。 上课: private View phoneNumberView; private EditText phoneNumberText; private String formattedPhoneNumber; private boolean isInAfterTextChanged; private AsYouTypeFormatter aytf; 首先我在我的类的顶部初始化AsYouTypeFormatter: aytf = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(Locale.getDefault().getCountry()); 在创build了我的选项卡之后,我创build一个EditText框,格式化其中的现有电话号码(工作),并附加侦听器(它是当前类): phoneNumberView = inflater.inflate(R.layout.phone_number_setting, null); phoneNumberText = (EditText) phoneNumberView.findViewById(R.id.dirty_phone_number); phoneNumberText.setText(dirtyPhoneNumber); for (int i = 0; i < dirtyPhoneNumber.length(); i++){ phoneNumberText.setText(aytf.inputDigit(dirtyPhoneNumber.charAt(i))); } aytf.clear(); phoneNumberText.setText(dirtyPhoneNumber); phoneNumberText.addTextChangedListener(this); 那么这就是我现在在TextWatcher函数中所具有的function,我不确定我的代码应该在哪个函数中: @Override public void afterTextChanged(Editable s) { if […]

如何在Android上使用TextWatcher处理Enter键

我正在使用Android。 以前我用onKeyListener来处理关键事件的特定操作。 然而,这种方式似乎不能解决我的问题,因为几乎所有的关键将获得禁用一旦我已经实现了侦听器到我的EditText 。 在阅读了一些主题后,我知道我应该使用TextWatcher代替,但我仍然想知道如何处理ENTER键内部,因为提供的参数只有CharSequence , Editable等,我没有find任何keyCode参数。

如何更改DataChange上的TextView文本而不调用TextWatcher监听器

TextView textView=new TextView(context); textView.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { s.append("A"); } }); 如果我们添加一个TextWatcher到一个TextView ,并且我想追加一个字母到这个TextView ,每次用户在其中写入一个字母,但是这个不停地重新调用TextWatcher Listener,所以就发生了StackOverFlow error ,所以如何附加一个文本而不用重新调用TextWatcher Listener?

如何在TextWatcher方法上下文中获取视图?

我有一个TextWatcher的处理程序,我不知道如何获得已经改变文本的View 。 这是我的处理程序: TextWatcher handler = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { oldText = s.toString(); } @Override public void afterTextChanged(Editable s) { //v.setText("afterTextChanged"); } }; 请注意,评论部分,这就是我想要的,从触发事件的EditText获取View ,更改文本后更改文本。 我怎么能达到afterTextChanged事件内的这个.setText […]

如何使TextWatcher在做一些动作之前等待一段时间

我有一个EditText来过滤它下面的ListView中的项目,通常可能包含超过1000个项目。 TextWatcher是: txt_itemSearch.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { fillItemList(); } public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); 这里的问题是,用户键入的每个字母,列表刷新,这是重复的列表更新,导致用户界面慢。 我如何使TextWatcher等待1-2秒,如果2秒后没有更多的input发生,然后过滤列表。 任何build议家伙?

TextWatcher的事件被调用两次

在我的应用程序上,我把TextWatcher放在EditText上。 当我改变EditText的文本时,TextWatcher的事件被调用两次。 我正在使用模拟器来运行应用程序。

实现相同接口的接口中的内部类,我们正在实现的是什么?

我的问题: 我在看TextWatcher的源代码,我没有在这里得到这个概念。 延伸到NoCopySpan有什么意义? TextWatcher.java: public interface TextWatcher extends NoCopySpan { public void beforeTextChanged(CharSequence s, int start, int count, int after); public void onTextChanged(CharSequence s, int start, int before, int count); public void afterTextChanged(Editable s); } NoCopySpan.java: package android.text; /** * This interface should be added to a span object that should not be copied into […]