3

Android アプリケーションに Edittext があります。ユーザーが最初のスペース文字を入力できるようにしたくありません..しかし、他の文字を入力した後、ユーザーはスペースも入力できます..私は使用しました

    <EditText
    android:id="@+id/editText1_in_row"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text" 
    android:digits="_,qwertzuiopasdfghjklyxcvbnm,QWERTYUIOPASDFGHJKLZXCVBNM,0123456789">

ただし、この場合、ユーザーはスペースを入力できません。

Text Watcherも使用しましたが、 android:digits が機能するため、テキストの入力時にユーザーを許可する必要はありません。

4

10 に答える 10

11
final EditText editText = (EditText)findViewById(R.id.editText1_in_row);


        InputFilter filter = new InputFilter() { 
            boolean canEnterSpace = false;

            public CharSequence filter(CharSequence source, int start, int end,
                    Spanned dest, int dstart, int dend) {

                if(editText.getText().toString().equals(""))
                {
                    canEnterSpace = false;
                }

                StringBuilder builder = new StringBuilder();

                for (int i = start; i < end; i++) { 
                    char currentChar = source.charAt(i);

                    if (Character.isLetterOrDigit(currentChar) || currentChar == '_') {
                        builder.append(currentChar);
                        canEnterSpace = true;
                    }

                    if(Character.isWhitespace(currentChar) && canEnterSpace) {
                        builder.append(currentChar);
                    }


                }
                return builder.toString();          
            }

        };


        editText.setFilters(new InputFilter[]{filter});

EditTextからこのプロパティを削除します

android:digits="_,qwertzuiopasdfghjklyxcvbnm,QWERTYUIOPASDFGHJKLZXCVBNM,0123456789"

このコードは、必要に応じて正確に機能します。

于 2013-10-22T09:37:05.860 に答える
6

扱いやすいInputFilterを使用すると、最初の空白文字を入力して無視する

editText の最初の setFilters() メソッド

editText.setFilters(new InputFilter[]{ignoreFirstWhiteSpace()});

入力フィルタを作成

    // ignore enter First space on edittext
    public InputFilter ignoreFirstWhiteSpace() {
        return 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.isWhitespace(source.charAt(i))) {
                        if (dstart == 0)
                            return "";
                    }
                }
                return null;
            }
        };
    }

XML に android:digits プロパティを記述する必要はありません

この行を削除

android:digits="_,qwertzuiopasdfghjklyxcvbnm,QWERTYUIOPASDFGHJKLZXCVBNM,0123456789"
于 2016-10-19T12:58:27.157 に答える
0

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.isLetterOrDigit(source.charAt(i))) { 
                  return ""; 
              }
          }
    return null;
   } 
        }; 

 EditText text = (EditText)findViewById(R.id.edittext1);
text.setFilters(new InputFilter[]{filter});

詳細はこちら

于 2013-10-22T07:14:29.253 に答える
0

editText.getText().trim(); を使用できない理由 EditText データの使用中の関数

于 2013-10-22T07:02:25.253 に答える
0

https://stackoverflow.com/users/2868352/abhishek-v回答のわずかなバリエーション。

public class NoInitialSpaceFilter implements InputFilter {
    @Override
    public CharSequence filter(final CharSequence source, final int start, final int end, final Spanned dest, final int dstart, final int dend) {
        if (dstart == 0) {
            for (int i = start; i < end; i++) {
                if (Character.isSpaceChar(source.charAt(i))) {
                    return "";
                }
            }
        }
        return null;
    }
}

使用法:

editText.setFilters(new InputFilter[]{new NoInitialSpaceFilter});
于 2016-01-14T14:33:21.930 に答える
0

他の人が開始時にのみ言ったように、ユーザーがスペースを入力するように制限するだけです:

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String text = createPL.getText().toString();

            //restrict space for first char
            if (text.startsWith(" ")) {
                edittext.setText(text.trim());
            }

        }
于 2018-04-10T11:09:03.593 に答える