Android: как отключить IME для EditText? - PullRequest
3 голосов
/ 09 ноября 2010

Как отключить IME-функциональность EditText?

Или: Как избежать отображения IME-клавиатуры?

У меня есть раскладка, в которой мойСпециальная клавиатура находится ниже EditText, поэтому нет необходимости показывать IME.Пожалуйста, поймите, что я не могу реализовать свою клавиатуру как IME, поскольку она специфична для этого самого EditText, и использование ее в любом другом контексте вызовет только проблемы.

Я пытался использовать

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

в onCreate() действия, но это, кажется, ничего не делает в этой ситуации.

Ответы [ 3 ]

6 голосов
/ 09 ноября 2010

Думаю, я нашел способ сделать это ... подкласс EditText и переопределить onCheckIsTextEditor() для возврата false:

public class EditTextEx extends EditText {

    public EditTextEx(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override 
    public boolean onCheckIsTextEditor() {
        return false;
    }       
}

Я проверил это и могуне заставить программную клавиатуру показывать вообще.

2 голосов
/ 10 сентября 2014
editText.setInputType(EditorInfo.TYPE_NULL);
0 голосов
/ 09 ноября 2010

Пытаясь заставить его работать, я также пытался:

inputField.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });

inputField.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        return false;
    }
});

Обе вызываются, но не скрывают всплывающее окно IME.

...