0

申し訳ありませんが、タイトルが長すぎて、他の言い方が見つかりませんでした。そのため、 があり、EditText残りの文字が 1 つしかない場合 ( 経由で監視できますTextWatcher)、バックスペース キーを無効にしたいと考えています。これが私がこれまでに持っているものです:

    editText$.addTextChangedListener(new TextWatcher() {
    private String current = "";
    String one = "1";   
    String empty = one; //Right now only set to "1" but want to set to "[any character]"
    public void onTextChanged(CharSequence s, int start, int before, int count) {       
    }
    public void afterTextChanged(Editable s) {

        if (s.toString().equals(empty)) {
            editText$.setOnKeyListener(new OnKeyListener() {                 
                public boolean onKey(View v, int keyCode, KeyEvent event) {                 
                     if(keyCode == KeyEvent.KEYCODE_DEL){                        
                           return true; //Disable backspace key here
                         }                  
                return false;       
                    }
            });         
        }       
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
  });

これは、次の 2 つの重要な問題を除いて機能します。

1)特定の文字(「1」)と、チェックしたい任意の文字をチェックする方法しかわかりません。試してみString empty = "1" + "2" + "etc";ましたが、それを行うとコードが機能しなくなり、さらに、タスクを実行する非効率的な方法のようです。

2) にEditText134 のようなものがある場合、「1」だけの文字ではありませんが、バックスペース キーが無効になります。どうやら「1」が最初の文字である場合、残りが何であるかは関係ありません. これが私の主な問題です。

これは多くの質問があることは承知していますが、これら 2 つの問題を解決するためにあなたが提供できる助けをいただければ幸いです。ありがとう。

4

1 に答える 1

5

ボックスに1文字しかないかどうかを検出するために使用できif (s.toString().length() == 1)、trueの場合はボタンを無効にします(falseの場合は有効にします)。

于 2013-01-19T21:26:27.893 に答える