afterTextChanged()中的setText()以相反的顺序显示文本

乌斯曼·汗

我的代码:

    fractionNumEt.addTextChangedListener(new TextWatcher() {

        boolean ignoreChange = false;

        @Override
        public void afterTextChanged(Editable s) {
            if(!ignoreChange) {
                String string = String.valueOf(s);
                if (string.length() > 2) {
                    string = string.substring(0, string.length() - 1);
                    ignoreChange = true;
                    fractionNumEt.setText(string);
                    ignoreChange = false;
                }
            }

        }

....

我正在尝试将字符长度限制为2,但希望继续收听。当我键入“ 1”,“ 2”时,它会显示“ 12”,这很好。现在,当我键入“ 3”时,它将写为“ 31”而不是“ 23”。到底是怎么回事!我也尝试过:

string = string.substring(1, string.length());

在这种情况下,它第一次只能工作n,然后什么都没有改变。

W0rmH0le

之所以发生这种情况setText()是因为之后,EditText的光标返回到第一个位置。然后,任何新的数字将在字符串的开头添加。

尝试如下更新代码:

@Override
public void afterTextChanged(Editable s) {
    if(!ignoreChange) {
        String string = String.valueOf(s);
        if (string.length() > 2) {
            string = string.substring(0, string.length() - 1);
            ignoreChange = true;
            fractionNumEt.setText(string);
            fractionNumEt.setSelection(fractionNumEt.getText().length());
            ignoreChange = false;
        }
    }
}

只是一个建议

这里检查可编辑文件

我认为您不需要将其转换为String。afterTextChanged(Editable s)接收一个Editable作为参数。您可以直接更改它。不需要将其隐藏为字符串。

而且:您甚至不需要制作EditText.setText(),因为可编辑内容中的任何更改都将自动传递给EditText(因为afterTextChangedandroid调用了它,使您有机会在更新文本之前有效地显示该文本)文字)。

也许是这样的:

@Override
public void afterTextChanged(Editable s) {
    if(!ignoreChange) {
        if(s.length() > 2) {
            s.delete(s.length() - 1,s.length());
        }
    }
}

用Editable播放一点,您会发现它更容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从ng-repeat中以相反的顺序显示Firebase中的项目

来自分类Dev

Edittext.settext() 不要在 onActivityResult() 中显示文本

来自分类Dev

如何使用PHP以相反的顺序显示日期?

来自分类Dev

以相反的顺序循环目录中的文件

来自分类Dev

在UNIX中以相反的顺序获取句子

来自分类Dev

vfptr中的Visual C ++方法以相反的顺序

来自分类Dev

Mongoose模式字段在MongoDB中是相反顺序的

来自分类Dev

函数在OCaml中以相反顺序返回列表

来自分类Dev

vfptr中的Visual C ++方法以相反的顺序

来自分类Dev

以相反的顺序对Arraylist中的数组进行排序

来自分类Dev

为什么 equals() 中的顺序是相反的

来自分类Dev

将属性存储到文本文件中时,文本文件中属性的书面顺序与代码执行的顺序相反

来自分类Dev

希伯来语、阿拉伯语、意第绪语文本在 PDFBox 2.0.5 中以相反的顺序书写

来自分类Dev

Galaxy S7以相反的顺序键入文本

来自分类Dev

QLineEdit在setText之后不显示文本

来自分类Dev

RadioButton.setText()未显示文本

来自分类Dev

QLineEdit在setText之后不显示文本

来自分类Dev

如何以相反的顺序显示mysql_fetch_array的结果?

来自分类Dev

collection.sort如何以相反的顺序显示输出?

来自分类Dev

如何使用seq(1)以相反的顺序显示数字?

来自分类Dev

如何以相反的顺序显示mysql_fetch_array的结果?

来自分类Dev

以字段的相反顺序显示每个字段分隔的行

来自分类Dev

圈子列表项中的导航文本不会流畅地缩小。相反,文本开始突出显示。

来自分类Dev

GUI Java文本和相反的文本字段显示

来自分类Dev

BufferReader程序逐行以相反顺序打印输入文件(文本文件),但它也以相反顺序打印单词

来自分类Dev

如何以相反的顺序从多个元素中删除类?

来自分类Dev

在C中以相反顺序传递参数的意义是什么?

来自分类Dev

从文件中的特定行以相反的顺序对文件进行Grep

来自分类Dev

如何在Google表格中以相反的顺序填写公式

Related 相关文章

  1. 1

    从ng-repeat中以相反的顺序显示Firebase中的项目

  2. 2

    Edittext.settext() 不要在 onActivityResult() 中显示文本

  3. 3

    如何使用PHP以相反的顺序显示日期?

  4. 4

    以相反的顺序循环目录中的文件

  5. 5

    在UNIX中以相反的顺序获取句子

  6. 6

    vfptr中的Visual C ++方法以相反的顺序

  7. 7

    Mongoose模式字段在MongoDB中是相反顺序的

  8. 8

    函数在OCaml中以相反顺序返回列表

  9. 9

    vfptr中的Visual C ++方法以相反的顺序

  10. 10

    以相反的顺序对Arraylist中的数组进行排序

  11. 11

    为什么 equals() 中的顺序是相反的

  12. 12

    将属性存储到文本文件中时,文本文件中属性的书面顺序与代码执行的顺序相反

  13. 13

    希伯来语、阿拉伯语、意第绪语文本在 PDFBox 2.0.5 中以相反的顺序书写

  14. 14

    Galaxy S7以相反的顺序键入文本

  15. 15

    QLineEdit在setText之后不显示文本

  16. 16

    RadioButton.setText()未显示文本

  17. 17

    QLineEdit在setText之后不显示文本

  18. 18

    如何以相反的顺序显示mysql_fetch_array的结果?

  19. 19

    collection.sort如何以相反的顺序显示输出?

  20. 20

    如何使用seq(1)以相反的顺序显示数字?

  21. 21

    如何以相反的顺序显示mysql_fetch_array的结果?

  22. 22

    以字段的相反顺序显示每个字段分隔的行

  23. 23

    圈子列表项中的导航文本不会流畅地缩小。相反,文本开始突出显示。

  24. 24

    GUI Java文本和相反的文本字段显示

  25. 25

    BufferReader程序逐行以相反顺序打印输入文件(文本文件),但它也以相反顺序打印单词

  26. 26

    如何以相反的顺序从多个元素中删除类?

  27. 27

    在C中以相反顺序传递参数的意义是什么?

  28. 28

    从文件中的特定行以相反的顺序对文件进行Grep

  29. 29

    如何在Google表格中以相反的顺序填写公式

热门标签

归档