首页 > 解决方案 > 如何在我的计算器应用程序中阻止 Edittext 中的重复字体?

问题描述

我正在制作一个简单的计算器应用程序。我不希望用户能够将乘法 (x) 字符输入为彼此相邻的两倍或更多。(如 xx、xxx、xxx...)。以下是我尝试过的代码。

 int cursorPos=edt_input.getSelectionStart();
  if (edt_input.getText().toString().equals("×")&&cursorPos==0||edt_input.getText().toString().equals("×")&&cursorPos==+1){
        edt_input.setText("");

    }

标签: javaandroidandroid-edittext

解决方案


像这样使用 InputFilter

InputFilter filter = new InputFilter() {
    public CharSequence filter(CharSequence source, int start, int end,
        Spanned dest, int dstart, int dend) {
        for (int i = start; i < end; i++) {
          if (Character.isLetter(source.charAt(i)) {
              if (Character.isLetter(source.charAt(i - 1)) {
                  return "";
                }
              }

            }

          };
        }

您还可以使用 TextWatcher 类来获得相同的功能

参考:如何在 Android 中使用 TextWatcher 类?

myEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // Do nothing
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String str = s.toString();
            if (str.substring(str.length-3,s.length-1)).equals("xx") {
                //put in code to remove the last x via code
            } 
        }

        @Override
        public void afterTextChanged(Editable s) {
            // Do nothing
        }
    });

推荐阅读