安卓editview点击时打开软键盘,点击其他地方软键盘消失(fragment中)
2016-10-20 11:41
435 查看
上篇文章写了在activity中如何实现安卓editview点击时打开软键盘,点击其他地方软键盘消失,用到事件分发,重写dispatchTouchEvent处理事件,但是在fragment中没有dispatchTouchEvent,那么就需要在fragment所在的activity中用接口的方法实现。
1、在activity中定义接口
public interface MyTouchListener {
public void onTouchEvent(MotionEvent event);
}
// 保存MyTouchListener接口的列表
private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>();
/**
* 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法
* @param listener
*/
public void registerMyTouchListener(MyTouchListener listener) {
myTouchListeners.add(listener);
}
/**
* 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法
* @param listener
*/
public void unRegisterMyTouchListener(MyTouchListener listener) {
myTouchListeners.remove( listener );
}
/**
* 分发触摸事件给所有注册了MyTouchListener的接口
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyTouchListener listener : myTouchListeners) {
listener.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
2、在fragment中实现接口
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.home_page, container,false);
/**
* Fragment中,注册
* 接收MainActivity的Touch回调的对象
* 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理
*/
MainActivity.MyTouchListener myTouchListener = new MainActivity.MyTouchListener() {
@Override
public void onTouchEvent(MotionEvent event) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
hideSoftInput(v.getWindowToken());
}
}
}
};
// 将myTouchListener注册到分发列表
((MainActivity)this.getActivity()).registerMyTouchListener(myTouchListener);
return rootView;
}
其中isShouldHideInput方法和hideSoftInput方法可以参考上篇文章
1、在activity中定义接口
public interface MyTouchListener {
public void onTouchEvent(MotionEvent event);
}
// 保存MyTouchListener接口的列表
private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>();
/**
* 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法
* @param listener
*/
public void registerMyTouchListener(MyTouchListener listener) {
myTouchListeners.add(listener);
}
/**
* 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法
* @param listener
*/
public void unRegisterMyTouchListener(MyTouchListener listener) {
myTouchListeners.remove( listener );
}
/**
* 分发触摸事件给所有注册了MyTouchListener的接口
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyTouchListener listener : myTouchListeners) {
listener.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
2、在fragment中实现接口
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.home_page, container,false);
/**
* Fragment中,注册
* 接收MainActivity的Touch回调的对象
* 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理
*/
MainActivity.MyTouchListener myTouchListener = new MainActivity.MyTouchListener() {
@Override
public void onTouchEvent(MotionEvent event) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
hideSoftInput(v.getWindowToken());
}
}
}
};
// 将myTouchListener注册到分发列表
((MainActivity)this.getActivity()).registerMyTouchListener(myTouchListener);
return rootView;
}
其中isShouldHideInput方法和hideSoftInput方法可以参考上篇文章
相关文章推荐
- 安卓editview点击时打开软键盘,点击其他地方软键盘消失(Activity中)
- 打开关闭软键盘,点击屏幕其他地方关闭软键盘
- 关于安卓alertdialog你能用到的都在这里了(进出动画,显示位置,背景,设置内容,是否可以点击其他地方消失,屏幕不变暗)
- 点击屏幕其他地方让软键盘消失
- 关于popupWindow点击屏幕其他地方或返回键消失
- 点击EditText可编辑,点击其他地方不可编辑
- 点击EditText以外的地方软键盘隐藏
- 点击其他地方界面消失
- WebView自定义浏览器之在点击链接后不使用其他浏览器打开
- js使点击网页其他地方使显示框消失
- webView点击打开其他的页面iOS
- 高德地图infowindow点击其他地方消失
- TrackPopupMenu SetCheck(1)无效? 点击其他地方快捷菜单不消失?
- Flex嵌套Iframe,点击除Iframe的其他地方后,Iframe内容消失的问题。
- Dialog中editview无法打开软键盘
- Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失
- Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失
- Android 安卓 fragment+viewpager 仿qq界面 实现点击菜单切换界面+滑动切换viewpager切换界面
- 点击edittext以外的地方关闭软键盘的方法
- 关于Edittext点击弹出软键盘,布局上移标题消失问题,微信聊天界面