在Android中如何通过点击edittext之外的部分使软键盘隐藏
2015-12-26 21:44
281 查看
我们知道在android中点击edittext框就会自动弹出软键盘,那怎么通过点击edittext之外的部分使软键盘隐藏呢?(微信聊天时的输入框就是这个效果,这个给用户的体验还是很不错的)
首先我们要先定义一个隐藏软键盘的工具类方法:
private void hideSoftKeyboard(Activity activity)
{
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
接下来的问题是应该怎么调用这个方法了,我们可以给我们的activity中的每个组件注册一个OnTouchListener监听器,这样只要我们手指接触到了其他组件,就会触发OnTouchListener监听器的onTouch方法,从而调用上面的隐藏软键盘的方法来隐藏软键盘。
这里还有一个问题就是如果activity中有很多组件怎么办,难不成每个组件都要写代码去注册这个OnTouchListener监听器?大可不必,我们只要找到根布局,然后让根布局自动找到其子组件,再递归注册监听器即可,详见下面代码:
private void SetOnTouch(View view)
{
if (!(view instanceof EditText))
{
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(SharedPreferenceActivity.this);
return false;
}
});
}
//递归监听OnTouch事件
if (!(view instanceof ViewGroup))
{
for (int i = 0; i < ((ViewGroup)view).getChildCount(); i++) {
SetOnTouch(((ViewGroup)view).getChildAt(i));
}
}
}
总的来说,我们在执行了actvity的oncreateview方法之后就调用setupUI(findViewById(R.id.root_layout))就可以了(其中root_layout为我们的根布局id)。是不是很简单了?:)
这里要谢过stackoverflow上的大神(本文基本为翻译):http://stackoverflow.com/questions/4165414/how-to-hide-soft-keyboard-on-android-after-clicking-outside-edittext
原文转自:http://www.it165.net/pro/html/201405/13742.html
首先我们要先定义一个隐藏软键盘的工具类方法:
private void hideSoftKeyboard(Activity activity)
{
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
接下来的问题是应该怎么调用这个方法了,我们可以给我们的activity中的每个组件注册一个OnTouchListener监听器,这样只要我们手指接触到了其他组件,就会触发OnTouchListener监听器的onTouch方法,从而调用上面的隐藏软键盘的方法来隐藏软键盘。
这里还有一个问题就是如果activity中有很多组件怎么办,难不成每个组件都要写代码去注册这个OnTouchListener监听器?大可不必,我们只要找到根布局,然后让根布局自动找到其子组件,再递归注册监听器即可,详见下面代码:
private void SetOnTouch(View view)
{
if (!(view instanceof EditText))
{
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(SharedPreferenceActivity.this);
return false;
}
});
}
//递归监听OnTouch事件
if (!(view instanceof ViewGroup))
{
for (int i = 0; i < ((ViewGroup)view).getChildCount(); i++) {
SetOnTouch(((ViewGroup)view).getChildAt(i));
}
}
}
总的来说,我们在执行了actvity的oncreateview方法之后就调用setupUI(findViewById(R.id.root_layout))就可以了(其中root_layout为我们的根布局id)。是不是很简单了?:)
这里要谢过stackoverflow上的大神(本文基本为翻译):http://stackoverflow.com/questions/4165414/how-to-hide-soft-keyboard-on-android-after-clicking-outside-edittext
原文转自:http://www.it165.net/pro/html/201405/13742.html
相关文章推荐
- 关于Android的LinearLayout的addView方法解析
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- android自动连接指定wifi
- Android多线程编程
- android设置默认输入法
- Android 新support库大集结
- Android自己定义组件系列【9】——Canvas绘制折线图
- Android_照相机Camera_使用intent调用系统照相机在onActivityResult返回data为空
- Andriod获取系统自带铃声
- Android 自己写一个打开图片的Activity
- 浅析ListView用法
- 【转】 Android学习笔记(21…
- [转]android声音调整源代码分析
- 【转】Android R.java文件丢…
- 【转】android 自定义progres…
- 【转】android利用VideoView实现视…
- 【转】android Videoview&nbs…
- 【转】Android三种播放视频的方式
- android 获取Bitmap 的两种方法
- android导入第三方jar包报错 …