Yan*_*niv 22 android android-edittext
我正在使用几个EditTexts 在Android上进行对话.onCreate()为了禁用软键盘,我把这一行放在了:
Keypad.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
问题是它只在对话框出现时无效.当我移动到下一个时EditText,键盘出现而不是下降.
有人知道如何解决这个问题吗?
zer*_*021 33
如果你看看onCheckIsTextEditor()方法实现(在TextView中),它看起来像这样:
@Override
public boolean onCheckIsTextEditor() {
return mInputType != EditorInfo.TYPE_NULL;
}
Run Code Online (Sandbox Code Playgroud)
这意味着您不必进行子类化,您可以:
((EditText) findViewById(R.id.editText1)).setInputType(InputType.TYPE_NULL);
Run Code Online (Sandbox Code Playgroud)
我尝试在布局xml中设置android:inputType ="none",但它对我不起作用,所以我以编程方式完成.
jkh*_*uw1 25
创建自己的类,扩展EditText和覆盖onCheckIsTextEditor():
public class NoImeEditText extends EditText {
public NoImeEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
ASP*_*ASP 21
试试吧..
edittext.setInputType(InputType.TYPE_NULL);
if (android.os.Build.VERSION.SDK_INT >= 11)
{
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);
edittext.setTextIsSelectable(true);
}
Run Code Online (Sandbox Code Playgroud)
我一整天都在寻找解决方案,我遇到了这种方法.我把它放在这里是因为它似乎完美地回答了这个问题.
EditText et = ... // your EditText
et.setKeyListener(null) //makes the EditText non-editable so, it acts like a TextView.
Run Code Online (Sandbox Code Playgroud)
不需要子类.这与使EditText不可聚焦的主要区别在于EditText仍然有自己的光标 - 你可以选择文本等等.它所做的就是抑制IME弹出自己的软键盘.
称呼TextView.setShowSoftInputOnFocus(false)。此方法自 API 级别 21 起就有记录,但自 API 级别 16 起就已存在(只是对 JavaDoc 隐藏了)。我在 AlertDialog 中将其与 API 级别 16 结合使用dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)。
在API级别14中,有一个隐藏方法setSoftInputShownOnFocus()似乎具有相同的目的,但我没有测试过。
优点是InputType.TYPE_NULL,可以使用所有正常输入类型(例如,用于密码输入),并且触摸事件将光标定位在文本内的正确位置。
| 归档时间: |
|
| 查看次数: |
37636 次 |
| 最近记录: |