2016-10-11 4 views
0

Я обновил Android 2.2 от 2.1 теперь, когда я устанавливаю inputType в текст в виджетах EditText, он не ограничивает мою запись только текстом. Это происходит в новых проектах. Мои старые проекты прекрасно работают. Android Studio 2.2 просит меня обновить плагин Gradle V 2.2.1 и версию 2.14.1 для более старых проектов. Является ли это ошибкой или я устанавливаю что-то не так в моем XML-файле? Я думал, что эта проблема будет исправлена ​​с AS 2.2.1 build 145-3330264, но без изменений. Я искал SO и пробовал различные исправления, связанные с junit 4.12 jar, которых нет в новых проектах без каких-либо результатов.Android Studio 2.2 inputType не работает

<EditText 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:text="Name" 
    android:id="@+id/etPW" 
    android:layout_marginTop="50dp" 
    android:layout_marginLeft="140dp" 
    android:textColor="@android:color/black" 
    android:textStyle="bold" 
    android:textSize="16sp" 
    android:inputType="text" 
    android:gravity="bottom"/> 
+0

Что именно вы ожидаете быть заблокированы 'андроида: inputType = "текст"'? Этот тип ввода позволяет использовать любой текст, последний раз я проверил. – CommonsWare

+0

@CommonsWare Я бы хотел, чтобы поле ET блокировало запись чисел, а в прошлом оно работало, как ожидалось, теперь не так много. Извините, я не объяснил ошибку –

+2

'android: inputType =" text "' не блокирует запись чисел. Это тип ввода по умолчанию для 'EditText'. Вы можете ввести все, что хотите. Я не знаю тип ввода, который предотвращает ввод чисел. – CommonsWare

ответ

3

Вы можете добавить это к вашему XML:

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 

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

+0

Когда этот синтаксис или концепция вошли в Android Studio? Он работает просто отлично, поэтому я буду голосовать. Так что, если я понимаю, что только символы, находящиеся в цифрах, разрешены так для поля пароля, я бы использовал это, а не Regex? –

+0

@James_Duh Я не уверен, сколько времени оно было доступно, но оно предназначено для ввода цифр. Однако, если вы позволяете вводить текст, он все равно будет работать, чтобы ограничить ввод указанными «цифрами». Я не могу сказать, следует ли использовать это по регулярному выражению, это будет выбор дизайна в зависимости от определенных критериев, которые вы знаете. – DigitalNinja

+0

Ну, я действительно смущен, так как мои старые проекты не нуждались в этой строке кода, и поскольку Федор Цыганов нашел ответ с 6-летнего поста, мне нужно задаться вопросом, что делает Google. Ваша одна строка проста, но я потратил много времени изучая Regex, чтобы ваши комментарии были оценены –

1

Аналогичный вопрос был задан here.

Я продублировать ответ:

либо из этих двух.

XML:

<EditText 
    android:id="@+id/editText" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

Java:

EditText state = (EditText) findViewById(R.id.editText); 

Pattern ps = Pattern.compile("^[a-zA-Z ]+$"); 
Matcher ms = ps.matcher(state.getText().toString()); 
boolean bs = ms.matches(); 
if (bs == false) { 
    if (ErrorMessage.contains("invalid")) 
     ErrorMessage = ErrorMessage + "state,"; 
    else 
     ErrorMessage = ErrorMessage + "invalid state,"; 
Смежные вопросы