Подтвердить что ты не робот

Android: отключить мягкую клавиатуру на всех EditTexts

Я работаю над диалогом на Android с несколькими EditText s. Я поместил эту строку в onCreate(), чтобы отключить мягкую клавиатуру:

Keypad.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Проблема заключается в том, что она работает только тогда, когда диалог появляется и ничего не делает. Когда я перехожу к следующему EditText, клавиатура появляется и не идет вниз.

Есть ли у кого-нибудь идеи, как решить эту проблему?

4b9b3361

Ответ 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, и щелчок больше не будет работать.