Articles of textwatcher

需要帮助获取Android TextWatcher以处理传入的复合条形码数据

我正在编写一个使用和外部连接USB条形码/ RFID扫描仪的应用程序。 正在扫描的数据是“复合”数据。 这是一个例子: =+03000=W12560712345600=%2800&>0090452359 那是来自复合数据扫描。 数据中的分隔符是等号(=)或&符号(&)。 第一位=+03000表示扫描中有三个数据部分: =W12560712345600 =%2800 &>0090452359 该数据可以具有从1到N的任意数量的数据部分。 在我的Android应用程序中,我有一个包含三个EditText元素的表单。 我需要对这个复合扫描数据做的是使用分隔符将其分解,并将每个数据粘贴到正确的EditText字段中。 经过多次痛苦之后,我已经意识到我不能只操纵stdin这一事实,并且我需要在我的一个EditText字段上使用TextWatcher捕获扫描数据,以便我可以操作它。 我的问题是我无法弄清楚如何做到这一点。 这是我有的: activity_main.xml中 MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText dataField01 = (EditText)findViewById(R.id.datafield01); EditText dataField02 = (EditText)findViewById(R.id.datafield02); EditText dataField02 = (EditText)findViewById(R.id.datafield03); dataField01.addTextChangedListener(editTextWatcher); } TextWatcher editTextWatcher = new TextWatcher(){ @Override public void beforeTextChanged(CharSequence […]

删除TextChangedListener然后重新添加它

所以我一直在尝试实现Android的TextWatcher,并遇到一些问题,TextChangedListener被多次调用或进入无限循环,因为我想将EditText小部件中的文本转换为货币格式化的字符串。 我解决这个问题的方法是创建我自己的自定义TextWatcher,然后在afterTextChanged事件中执行类似下面的操作 public class CurrencyTextWatcher implements TextWatcher { private EditText et; public CurrencyTextWatcher(EditText editText) { et = editText; } 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) { et.removeTextChangedListener(this); et.setText(myCurrencyString); et.addTextChangedListener(this); } } 所以我的问题是,有更好的方法吗? 我希望有一个EditText […]

如何使用TextWatcher删除EditText中的文本? 每次检测到字符串并格式化它

我有一个带TextWatcher的EditText。 它应该将文本格式化为人类高度,如5’9“。但是当用户犯了错误并想删除输入错误的字符时,TextWather不允许他这样做。假设用户想要删除”characther the TextWather立即加回。 以下是代码。 那么如何允许用户删除EditText中的文本? private class CustomTextWatcher implements TextWatcher { private EditText mEditText; public CustomTextWatcher(EditText e) { mEditText = e; } 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) { int count = […]

Android处理ListView中的许多EditText字段

只是一个基本问题:如果我有几十个属于ListAdapter的EditText字段,那么各个EditText字段如何知道它们属于哪一行? 目前我正在使用TextWatcher来监听文本输入。 我试过扩展TextWatcher,以便我可以将EditText的位置传递给TextWatcher的构造函数。 但是,当popup软键盘时,与各种EditText字段对应的位置会随机播放。 如何跟踪EditText字段到正确的位置? 我正在使用GridView来解决问题。 每个项目的布局都是一个ImageView,下面有TextView和EditText字段。 每个EditText的文本都保存在一个名为strings的全局String数组中。 它最初是空的,并由我的TextWatcher类更新。 public void initList() { ArrayAdapter listAdapter = new ArrayAdapter(this, R.layout.shape, strings) { @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.shape, null); } final String theData = getItem(position); final EditText editText = (EditText) convertView.findViewById(R.id.shape_edittext); editText.setText(theData); editText.addTextChangedListener( […]

在EditText中只允许使用1个字符,并在用户输入时始终覆盖

我需要创建一个只接受一个字符且只接受字符(字母/字母)的EditText 。 如果用户输入其他字符,则应替换现有字符(如使用1个允许符号覆盖文本输入的方法)。 我知道如何设置属性中文本的最大长度。 但是,如果我将其设置为1,则在用户删除现有字符之前不能插入其他字符。 但我希望自动替换现有的char,而无需手动删除。 怎么做? 我知道如何设置属性只允许EditText数字,但我无法弄清楚如何只允许字符。 那么第二个问题是如何只允许EditText字符? 目前我正在使用最大文本大小= 2的EditText ,其代码如下: final EditText editLetter = (EditText)findViewById(R.id.editHouseLetter); editLetter.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { if (s!=null && s.length()>1){ editLetter.setText(s.subSequence(1, s.length())); editLetter.setSelection(1); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int […]

如何在Android中的编辑文本中限制数字中的文本数量为0-59?

我有一个Edit Text ,其中数字只能在0-59之间,在Edit Text不会输入其他数字,我尝试了text-watcher但没有获得成功。 任何想法? 12-26 14:59:39.715: E/AndroidRuntime(19494): FATAL EXCEPTION: main 12-26 14:59:39.715: E/AndroidRuntime(19494): java.lang.StackOverflowError 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.ViewGroup.findViewTraversal(ViewGroup.java:2765) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.View.findViewById(View.java:10442) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.ViewGroup.findViewTraversal(ViewGroup.java:2765) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.View.findViewById(View.java:10442) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.ViewGroup.findViewTraversal(ViewGroup.java:2765) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.View.findViewById(View.java:10442) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.ViewGroup.findViewTraversal(ViewGroup.java:2765) 12-26 14:59:39.715: E/AndroidRuntime(19494): at android.view.View.findViewById(View.java:10442) […]

在Android中自动在电话号码中添加短划线

而不是5118710,它应该是511-8710 。 我想在用户输入EditText中已有3位数的用户之后添加一个破折号。 EditText的最大长度仅为7位数。 在我弄清楚上述问题后,我再次陷入编码困境。 当我已经输入3位数字时,它会附加破折号(这就是我想要发生的事情),但我的问题是接下来的3位数字还附加破折号(如下: 511-871- ) …请帮我这个。 谢谢! txt_HomeNo.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { boolean flag = true; String eachBlock[] = txt_HomeNo.getText().toString().split(“-“); for (int i = 0; i 3) { flag = false; } } if (flag) { txt_HomeNo.setOnKeyListener(new OnKeyListener() { @Override public boolean […]

使用while循环的Android stackoverflow

我正在使用此方法缩小TextView文本,因为它的名字暗示: public static float shrinkTextToFit(String caller, float availableWidth, TextView textView, float startingTextSize, float minimumTextSize) { startingTextSize = textView.getTextSize() < startingTextSize ? textView.getTextSize() : startingTextSize; Log.i("123", "========================="); Log.i("123", caller + " called shrinkTextToFit"); CharSequence text = textView.getText(); float textSize = startingTextSize; textView.setTextSize(startingTextSize); while (!TextUtils.equals(text, (TextUtils.ellipsize(text, textView.getPaint(), availableWidth, TextUtils.TruncateAt.END)))) { textSize -= 2; Log.i("123", "textSize: " + […]

使用TextWatcher进行EditTextvalidation

我有一个带有EditText和按钮的Dialog。 这个EditText将命名我将创建的数据库表,以便validation它的最重要性。 所以我想提出2个问题: 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 […]

检测TextWatcher中的退格

我正在使用TextWatcher ,我无法在TextWatcher.afterTextChange事件中检测Backspace键。 我还想在textWatcher事件中的某些条件下清除textWatcher 。 public void afterTextChanged(Editable s) { // TODO Auto-generated method stub // I want to detect backspace key here }