我正在使用一些EditText
在Android上进行对话。
我已将此行放在onCreate()
以禁用软键盘:
Keypad.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
问题是它只在对话框出现时无效。
当我移动到下一个EditText
时,键盘会出现而不会下降。
有人知道如何解决这个问题吗?
答案 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,点击将不再起作用。