Android:在所有EditTexts上禁用软键盘

时间:2011-04-27 11:20:07

标签: android android-edittext

我正在使用一些EditText在Android上进行对话。 我已将此行放在onCreate()以禁用软键盘:

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

问题是它只在对话框出现时无效。 当我移动到下一个EditText时,键盘会出现而不会下降。

有人知道如何解决这个问题吗?

12 个答案:

答案 0 :(得分:30)

如果你看看onCheckIsTextEditor()方法实现(在TextView中),它看起来像这样:

@Override
public boolean onCheckIsTextEditor() {
    return mInputType != EditorInfo.TYPE_NULL;
}

这意味着您不必进行子类化,只需:

((EditText) findViewById(R.id.editText1)).setInputType(InputType.TYPE_NULL); 

我尝试在布局xml中设置 android:inputType =“none”,但它对我不起作用,所以我以编程方式完成。

答案 1 :(得分:24)

创建自己的扩展EditText的类并覆盖onCheckIsTextEditor()

public class NoImeEditText extends EditText {
    public NoImeEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    public boolean onCheckIsTextEditor() {
        return false;
    }
}

答案 2 :(得分:20)

试试这个..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}

答案 3 :(得分:5)

我一整天都在寻找解决方案,我遇到了这种方法。我把它放在这里因为它似乎完美地回答了这个问题。

EditText et = ... // your EditText
et.setKeyListener(null) //makes the EditText non-editable so, it acts like a TextView.

无需子类。这与EditText不可聚焦之间的主要区别在于EditText仍然有自己的光标 - 你可以选择文本等等。它只是阻止IME弹出自己的软键盘。

答案 4 :(得分:4)

这篇帖子已经过了一段时间,但这是一个对我有用的简单方法:在xml中,在EditText属性中,执行:android:focusable="false"。现在,即使用户点击它,键盘也不会弹出。如果您提供自己的键盘,这非常有用。

答案 5 :(得分:1)

知道为时已晚,但您是否在布局中尝试过以下设置EditText?

android:inputType="none"

<强>更新

使用,

editText.setInputType(InputType.TYPE_NULL)
editText.setFocusable(false)

答案 6 :(得分:1)

将它放在Oncreate Method

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

答案 7 :(得分:0)

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edSearch.getWindowToken(), 0);

答案 8 :(得分:0)

为了禁用ANDROID SOFT INPUT KEYBOARD xml文件对我的情况没有帮助 在java文件中的EditText对象上调用setInputType方法效果很好。 这是代码。

EditTextInputObj = (EditText) findViewById(R.id.EditTextInput);
EditTextInputObj.setInputType(InputType.TYPE_NULL); 

答案 9 :(得分:0)

如果将textView放在视图组中,可以使视图在其任何后代之前获得焦点:

view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS);

答案 10 :(得分:0)

通过设置EditText focusable-&gt; false,单击时不会打开键盘

<EditText
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:focusable="false" />

答案 11 :(得分:0)

你可以这样做:

textView.setOnClickListener(null);

它会禁用键盘到textView,点击将不再起作用。