Android: отключить мягкую клавиатуру на всех EditTexts
Я работаю над диалогом на Android с несколькими EditText
s.
Я поместил эту строку в onCreate()
, чтобы отключить мягкую клавиатуру:
Keypad.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Проблема заключается в том, что она работает только тогда, когда диалог появляется и ничего не делает.
Когда я перехожу к следующему EditText
, клавиатура появляется и не идет вниз.
Есть ли у кого-нибудь идеи, как решить эту проблему?
Ответы
Ответ 1
создайте свой собственный класс, который расширяет EditText
и переопределяет onCheckIsTextEditor()
:
public class NoImeEditText extends EditText {
public NoImeEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
}
Ответ 2
Если вы посмотрите на реализацию метода onCheckIsTextEditor() (в TextView), это выглядит так:
@Override
public boolean onCheckIsTextEditor() {
return mInputType != EditorInfo.TYPE_NULL;
}
Это означает, что вам не нужно подклассы, вы можете просто:
((EditText) findViewById(R.id.editText1)).setInputType(InputType.TYPE_NULL);
Я попробовал установить android: inputType = "none" в макете xml, но это не сработало для меня, поэтому я сделал это программно.
Ответ 3
Попробуйте это.
edittext.setInputType(InputType.TYPE_NULL);
if (android.os.Build.VERSION.SDK_INT >= 11)
{
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);
edittext.setTextIsSelectable(true);
}
Ответ 4
Я искал решения для этого весь день, и я наткнулся на этот подход. Я помещаю его здесь, потому что он, кажется, полностью отвечает на этот вопрос.
EditText et = ... // your EditText
et.setKeyListener(null) //makes the EditText non-editable so, it acts like a TextView.
Нет необходимости в подклассе. Основное отличие этого и сделать ваш EditText неактивным, заключается в том, что EditText по-прежнему имеет свой собственный указатель - вы можете выбрать текст и т.д. Все, что он делает, это подавление IME от появления своей мягкой клавиатуры.
Ответ 5
Прошло некоторое время с этого поста, но вот простой способ, который работал у меня: в xml, в свойствах EditText
, выполните: android:focusable="false"
. Теперь клавиатура не будет всплывать, даже если пользователь нажимает на нее. Это полезно, если вы предоставляете свою собственную клавиатуру.
Ответ 6
Знайте его слишком поздно, но попробовали ли вы использовать следующий параметр EditText в своем макете?
android:inputType="none"
UPDATE
Использование
editText.setInputType(InputType.TYPE_NULL)
editText.setFocusable(false)
Ответ 7
Вызвать TextView.setShowSoftInputOnFocus(false)
. Этот метод документирован с уровня API 21, но он уже существует с уровня API 16 (он просто скрыт от JavaDoc). Я использую его с уровнем API 16 в AlertDialog в сочетании с dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
.
В уровне API 14 есть скрытый метод setSoftInputShownOnFocus()
, который, похоже, имеет ту же цель, но я не тестировал это.
Преимущество над InputType.TYPE_NULL
заключается в том, что все обычные типы ввода могут использоваться (например, для ввода пароля), а сенсорное событие позиционирует курсор в правильном месте в тексте.
Ответ 8
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edSearch.getWindowToken(), 0);
Ответ 9
чтобы отключить XML файл ANDROID SOFT INPUT KEYBOARD, в моем случае не помогает
вызов метода setInputType объекта EditText в java файле отлично работает.
вот код.
EditTextInputObj = (EditText) findViewById(R.id.EditTextInput);
EditTextInputObj.setInputType(InputType.TYPE_NULL);
Ответ 10
Поместите это в метод Oncreate
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 11
Если вы поместите текстовые элементы в группу представлений, вы можете сделать make, чтобы получить фокус перед любым из его потомков, используя это:
view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS);
Ответ 12
с помощью set EditText focusable- > false, клавиатура не открывается при нажатии
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false" />
Ответ 13
Вы можете сделать это:
textView.setOnClickListener(null);
Он отключит клавиатуру для textView, и щелчок больше не будет работать.