Android:如何为EditText关闭IME?

时间:2010-11-09 07:49:20

标签: android keyboard android-softkeyboard

如何关闭EditText的IME功能?

或者:如何避免显示IME键盘?

我有一个布局,我的特殊键盘位于EditText下方,因此无需显示IME。请理解我无法将我的键盘实现为IME,因为它特定于此EditText并且在任何其他上下文中使用它只会导致问题。

我尝试使用

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

在活动的onCreate()中,但在这种情况下似乎没有做任何事情。

3 个答案:

答案 0 :(得分:6)

想想我找到了一种方法......子类EditText并覆盖onCheckIsTextEditor()以返回false:

public class EditTextEx extends EditText {

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

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

我已经测试了它,我根本无法显示软键盘。

答案 1 :(得分:2)

editText.setInputType(EditorInfo.TYPE_NULL);

答案 2 :(得分: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弹出窗口。