2010-11-09 2 views
2

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

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

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

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

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

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

+0

Этот пользовательский EditText разрешен для ввода ввода с аппаратной клавиатуры? Если нет, то есть, если он управляется только с вашей пользовательской клавиатуры программного обеспечения, то, возможно, он не должен редактироваться вообще ... –

+0

@reuben: Ну, это проблема. Пользователь не должен ограничиваться мягкой клавиатурой. Ему также должно быть разрешено перемещаться, нажав на «EditText», поскольку длина текста не ограничена. – sjngm

ответ

5

Кажется, я нашел способ сделать это ... подкласс EditText и переопределить onCheckIsTextEditor() вернуть ложь:

public class EditTextEx extends EditText { 

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

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

Я проверил это, и я не могу получить мягкие клавиатуры, чтобы показать на всех.

+0

Да, здорово! Вы первым отвечаете на любой из моих четырех вопросов. Поздравляем :) – sjngm

+0

'editText.setInputType (EditorInfo.TYPE_NULL);' имеет тот же эффект – betorcs

+0

примечание: он отключит курсор – vuhung3990

0

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

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-всплывающее.

1
editText.setInputType(EditorInfo.TYPE_NULL); 
+0

. Однако это отключает курсор. – Sam

Смежные вопросы