11

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 < eachBlock.length; i++) {
                if (eachBlock[i].length() > 3) {
                    flag = false;
                }
            }

            if (flag) {

                txt_HomeNo.setOnKeyListener(new OnKeyListener() {

                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {

                        if (keyCode == KeyEvent.KEYCODE_DEL)
                            keyDel = 1;
                        return false;
                    }
                });

                if (keyDel == 0) {

                    if (((txt_HomeNo.getText().length() + 1) % 4) == 0) {

                        if (txt_HomeNo.getText().toString().split("-").length <= 3) {
                            txt_HomeNo.setText(txt_HomeNo.getText() + "-");
                            txt_HomeNo.setSelection(txt_HomeNo.getText().length());
                        }
                    }
                    a = txt_HomeNo.getText().toString();
                } else {
                    a = txt_HomeNo.getText().toString();
                    keyDel = 0;
                }

            } else {
                txt_HomeNo.setText(a);
            }

        }
4

7 に答える 7

11

addTextChangedListener用に変更された以下を実装しますtxt_HomeNo。以下のコードは、入力されたテキストの長さが 3 であるかどうかをチェックし、3 である場合はそれに を追加-します。非常に堅牢なソリューションではありませんが、機能します!

txt_HomeNo.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

        txt_HomeNo.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (keyCode == KeyEvent.KEYCODE_DEL)
                    keyDel = 1;
                return false;
            }
        });

        if (keyDel == 0) {
            int len = txt_HomeNo.getText().length();
            if(len == 3) {
                txt_HomeNo.setText(txt_HomeNo.getText() + "-");
                txt_HomeNo.setSelection(txt_HomeNo.getText().length());
            }
        } else {
            keyDel = 0;
        }
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
    }
});
于 2013-06-07T05:53:56.763 に答える
0

OnEditTextChangedListener を使用して自分で行い、文字数を数えてダッシュを挿入し、EditText Changed Listenerで文字を数えます

于 2013-06-07T02:35:11.280 に答える