2016-07-28 18 views
4

Я создал EditText со следующим.Отключить пробел в EditText android

<EditText 
     android:id="@+id/et_regis_num" 
     android:maxLines="1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:digits="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
     android:hint="@string/txt_reg_num" 
     android:inputType="textCapCharacters" 
     android:maxLength="10" /> 

в этом EditText я не хочу, чтобы нажать клавишу пробела, но когда я нажав клавишу пробела он работает как ключ Backspace. означает, что при каждом нажатии дважды один символ удаляется.

+2

Не задал вопрос. Является ли это (пространство работает как backspace) текущее поведение или ожидаемое поведение? –

+0

Вы можете установить входные фильтры, как указано в этом сообщении http://stackoverflow.com/questions/33993041/android-disable-space-only-for-edittext –

+0

@IshitaSinha согласен – eLemEnt

ответ

2

Просто позвольте пространство в EditText и заменить пространство с пустым,

@Override 
    public void afterTextChanged(Editable s) { 
    String result = s.toString().replaceAll(" ", ""); 
    if (!s.toString().equals(result)) { 
     ed.setText(result); 
     ed.setSelection(result.length()); 
     // alert the user 
    } 
} 
+0

вы пробовали, если я уже упоминал андроид: цифры. поэтому Space не будет рассматриваться здесь. –

+0

вы пытались добавить как этот андроид: цифры = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ" в XML –

+0

Я попытался, как это и afterTextChanged –

3

Set InputFilter на EditText. Пожалуйста, проверьте ниже ответ, это сработало для меня.

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

edtTxt.setFilters(new InputFilter[] { filter }); 
+0

Этот подход имеет очень странный побочный эффект (если предложения включены для этого EditText) - триггеры нажатия, подобные backspace. 1-е введенное пространство в конце EditText действительно отфильтровывает, но следующие косвенные привязки работают как обратное пространство, стирая введенный текст, который является совершенно странным. Чтобы избежать этого побочного эффекта, вы можете использовать inputType = "textVisiblePassword" - с этим обходным решением он будет работать. – Stan