我有一个webview,我有3种输入类型
当我从数字切换到文本输入字段时,qwerty键盘会按预期打开。当我从文本切换到密码时,qwerty键盘打开,没有任何需要和预期的建议。但问题是,当我从数字键切换到密码输入字段时,数字键盘打开但我希望它是qwerty,所以我可以在密码字段中默认输入字母
我这样做是为了覆盖我的webview onCreateInputConnection。下面的代码与此问题无关,因为此代码用作在数字小键盘上显示十进制键的解决方案,默认情况下不存在。但我知道有些事情需要在这里改变才能解决我的问题
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
super.onCreateInputConnection(outAttrs);
if ((outAttrs.inputType & InputType.TYPE_CLASS_NUMBER) == InputType.TYPE_CLASS_NUMBER)
{
outAttrs.inputType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
}
else
{
outAttrs.inputType |=InputType.TYPE_CLASS_TEXT;
InputConnection connection = super.onCreateInputConnection(outAttrs);
return connection;
}
return new ExtendedInputConnection(this,false);
}
这是ExtendedInputConnection类,仅供参考。这里我添加了方法,以便发送退格键控事件并由JQuery
捕获public class ExtendedInputConnection extends BaseInputConnection implements InputConnection{
public ExtendedInputConnection(View targetView, boolean fullEditor) {
super(targetView, fullEditor);
// TODO Auto-generated constructor stub
}
@Override
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
// in latest Android, deleteSurroundingText(1, 0) will be called for backspace
if (beforeLength == 1 && afterLength == 0) {
// backspace
return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
}
return super.deleteSurroundingText(beforeLength, afterLength);
}
}
答案 0 :(得分:0)
对您来说可能更有用,而不是使用|=
添加更多标志,只需使用=
运算符分配它们,否则您将堆叠不同的标志,从而导致不期望的行为:
案例1:InputType.TYPE_NUMBER_FLAG_DECIMAL
案例2:InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE
案例3:InputType.TYPE_TEXT_VARIATION_PASSWORD
这应该可以解决问题。
希望它有所帮助!