Android问题集(四)——EditText输入完毕后,击屏幕其它区域,隐藏/关闭输入法
2015-09-01 22:30
519 查看
使用场景:EditText输入完毕后,点击屏幕其他区域,关闭输入法。
思路:
1、让EditText失去焦点,即让EditText所在的布局layout获取焦点;
2、隐藏输入法。
例一:使LinearLayout布局下的EditText,在输入完毕后,点击屏幕其他区域,关闭输入法:
拓展:当应用包含较多EditText时,将该方法写到一个类中,用时调用更为便捷:
在MainActivity中使RelativeLayout布局下的EditText,在输入完毕后,点击屏幕其他区域,关闭输入法:
思路:
1、让EditText失去焦点,即让EditText所在的布局layout获取焦点;
2、隐藏输入法。
例一:使LinearLayout布局下的EditText,在输入完毕后,点击屏幕其他区域,关闭输入法:
LinearLayout linearLayout =(LinearLayout)findViewById(R.Id.linearLayout ); linearLayout.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //------------------------------------------------- //让linearLayout获取焦点 linearLayout.setFocusable(true); linearLayout.setFocusableInTouchMode(true); linearLayout.requestFocus(); //------------------------------------------------- //隐藏输入法 InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(linearLayout.getWindowToken(), 0); return false; } });
拓展:当应用包含较多EditText时,将该方法写到一个类中,用时调用更为便捷:
public class LostFocus { /*************************************************************************** * * 使线性布局中的EditText失去焦点,并隐藏输入法。 * ***************************************************************************/ public void linearLayout(final LinearLayout linearLayout,final Context context) { linearLayout.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //------------------------------------------------- //linearLayout获取焦点 linearLayout.setFocusable(true); linearLayout.setFocusableInTouchMode(true); linearLayout.requestFocus(); //------------------------------------------------- //隐藏输入法 InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(linearLayout.getWindowToken(), 0); return false; } }); } /*************************************************************************** * * 使相对布局中的EditText失去焦点,并隐藏输入法。 * ***************************************************************************/ public void relativeLayout(final RelativeLayout relativeLayout,final Context context) { relativeLayout.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //------------------------------------------------- //relativeLayout获取焦点 relativeLayout.setFocusable(true); relativeLayout.setFocusableInTouchMode(true); relativeLayout.requestFocus(); //------------------------------------------------- //隐藏输入法 InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(relativeLayout.getWindowToken(), 0); return false; } }); } }
在MainActivity中使RelativeLayout布局下的EditText,在输入完毕后,点击屏幕其他区域,关闭输入法:
// -------------------------------------------------------------------------------- LostFocus mLostFocus = new LostFocus(); RelativeLayout mRelativeLayout = (RelativeLayout) findViewById(R.id.relative_layout_login); // -------------------------------------------------------------------------------- mLostFocus.relativeLayout(mRelativeLayout, MainActivity.this);
相关文章推荐
- android性能优化
- Android fragment详解
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
- Android Framework 记录之一
- Android Studio 在线下载sdk问题
- Androidannotations框架快速搭建
- 【转】Android开发相关的Blog推荐
- 【Android应用源码分析】HandlerThread 源码分析
- Android ViewHolder 优化 ListView
- Android-本地方法C调用Java中的方法/NDK-JNI开发实例(六)
- android EditText获取焦点后与输入框界面冲突解决方法
- Android ListView错位问题之背景色错位
- Android “fragment” 替换 “Tabhost”技术
- android CountDownTimer 倒计时
- android:SQLite--触发器详解
- Android问题集(三)——禁止进入新Activity界面后因Edittext而弹出输入法;禁止横屏效果
- Android之Adapter用法总结
- Android项目开发实战:倒计时
- Android通用生命周期
- Android基础入门教程——6.1 数据存储与访问之——文件存储读写