Android上有很多输入法应用,每种输入法都有各自的特点,输入法多数时候是和EditText配合使用,结合我自己的亲身实践分享一下使用EditText过程中遇到的一些问题及解决方法。
设置默认输入法
有时候为了提高用户体验,在弹出输入法时需要设置默认的输入状态,比如单词应用弹出输入法时,输入法最好是在英文输入状态下。如果是字典应用,弹出输入法时最好是在中文输入状态下,Android并没有提供设置默认的输入状态的接口,但我们可以通过如下方法一样能够达到想要的效果:
默认中文:
1 |
mEditText.setInputType(EditorInfo.TYPE_CLASS_TEXT); |
默认英文:
1 |
mEditText.setInputType(EditorInfo.TYPE_TEXT_VARIATION_URI); |
打开和关闭输入法
手动控制输入法的开关状态也能提升用户体验,比如:
- 有的搜索框会有一个清除按钮,点击清除按钮时就应该弹出输入法,因为用户清除搜索内容的目的多数时候是需要输入新的内容;
- 执行搜索时应该隐藏输入法,因为显示输入法时会遮挡搜索结果,用户体验不太好;
- 闹钟来时或者有其它window弹出时应该隐藏输入法,因为输入法也是window,如果不隐藏可能导致输入法遮挡住了其它window等用户体验不太友好的问题。
打开输入法:
1 2 3 4 |
private void open(Context context, View editText){ InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(editText, 0); } |
关闭输入法:
1 2 3 4 |
private void close(Context context, View editText){ InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(), 0); } |
监听EditText的输入状态
- 类似新浪微博,在输入内容时会提示还可以输入多少字;
- 有的搜索引擎,输入内容时实时显示搜索结果;
- 有的输入框有输入长度限制,输入内容超过长度限制时弹出提示信息。
上面这些都可以通过监听EditText的输入状态来实现,具体实现方式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mInputEditTxt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { System.out.println("监听EditText输入内容的变化,在这里可以监听输入内容的长度。"); } @Override public void afterTextChanged(Editable s) { System.out.println("这里可以实现所输即所得,用户输入的同时可以立即在这里根据输入内容执行操作,显示搜索结果!"); } }); |
监听输入法中的回车按钮
比如搜狗输入法的右下角有一个回车按钮,我们希望用户点击它时也执行确认功能,可以通过监听EditText的按键点击事件来实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * 监听输入法按键 * * */ mInputEditTxt.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { System.out.println("手指弹起时执行确认功能"); return true; Ƃ单词应用弹出输入法时,输入法最好是在英文输入状态下。如果是字典应用,弹出输入法时最好是在中文输入状态下,Android并没有提供设置默认的输入状态的接口,但我们可以通过如下方法一样能够达到想要的效果:
默认中文:
默认英文:
打开和关闭输入法手动控制输入法的开关状态也能提升用户体验,比如:
打开输入法:
关闭输入法:
监听EditText的输入状态
上面这些都可以通过监听EditText的输入状态来实现,具体实现方式如下:
监听输入法中的回车按钮比如搜狗输入法的右下角有一个回车按钮,我们希望用户点击它时也执行确认功能,可以通过监听EditText的按键点击事件来实现:
|