当一进入到搜索界面就弹出软键盘
来源:互联网 发布:批发商软件 编辑:程序博客网 时间:2024/05/01 07:45
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) findViewById(R.id.et);
et.setFocusable(true);
et.setFocusableInTouchMode(true);
et.requestFocus();
// Timer timer=new Timer();
// timer.schedule(new TimerTask() {
// @Override
// public void run() {
// InputMethodManager inputMethodManager = (
InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
// inputMethodManager.toggleSoftInput(0,
InputMethodManager.HIDE_NOT_ALWAYS);
// }
// }, 300);
// InputMethodManager inputManager = (
InputMethodManager)et.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
//// inputManager.showSoftInput(et,0);
// inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, ev)) {
hideKeyboard(v.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,
因为当用户点击EditText时则不能隐藏
* @param v
* @param event
* @return
*/
private boolean isShouldHideKeyboard(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0],
top = l[1],
bottom = top + v.getHeight(),
right = left + v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 点击EditText的事件,忽略它。
return false;
} else {
return true;
}
}
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一
//个焦点不在EditText上,和用户用轨迹球选择其他的焦点
return false;
}
/**
* 获取InputMethodManager,隐藏软键盘
* @param token
*/
private void hideKeyboard(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
@Override
protected void onResume() {
super.onResume();
Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager inputMethodManager = (
InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(
0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 295);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) findViewById(R.id.et);
et.setFocusable(true);
et.setFocusableInTouchMode(true);
et.requestFocus();
// Timer timer=new Timer();
// timer.schedule(new TimerTask() {
// @Override
// public void run() {
// InputMethodManager inputMethodManager = (
InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
// inputMethodManager.toggleSoftInput(0,
InputMethodManager.HIDE_NOT_ALWAYS);
// }
// }, 300);
// InputMethodManager inputManager = (
InputMethodManager)et.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
//// inputManager.showSoftInput(et,0);
// inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, ev)) {
hideKeyboard(v.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,
因为当用户点击EditText时则不能隐藏
* @param v
* @param event
* @return
*/
private boolean isShouldHideKeyboard(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0],
top = l[1],
bottom = top + v.getHeight(),
right = left + v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 点击EditText的事件,忽略它。
return false;
} else {
return true;
}
}
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一
//个焦点不在EditText上,和用户用轨迹球选择其他的焦点
return false;
}
/**
* 获取InputMethodManager,隐藏软键盘
* @param token
*/
private void hideKeyboard(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
@Override
protected void onResume() {
super.onResume();
Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager inputMethodManager = (
InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(
0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 295);
}
}
0 0
- 当一进入到搜索界面就弹出软键盘
- 如何一进入到搜索界面就自动获取到edittext的焦点并自动弹出软键盘
- android 一进入view就弹出软键盘的问题
- EditText一进入页面就弹出软键盘
- 进入Activity的时候隐藏软键盘当获取到焦点的时候弹出软键盘
- Android进入界面软键盘直接弹出界面
- Android进入页面开始就自动弹出软键盘
- EditText焦点问题:进入app之后,就弹出软键盘
- android 开发中进入一个activity界面软键盘自动弹出解决(布局中有edittext)
- 解决刚进入APP时搜索框获取焦点,软键盘自动弹出的问题
- 进入Actiity中不让软键盘弹出
- Android 进入Activity自动弹出软键盘
- 当电脑进入windows loading 界面就死机处理方法
- 实现 软键盘弹出,界面整体上移
- android 软键盘弹出,界面上移
- 软键盘弹出,整体界面上移
- 软键盘弹出挤压界面的问题
- Android软键盘弹出,界面整体上移
- 11.zabbix学习笔记:zabbix监控oracle
- 【2016-沈阳赛区现场赛-E】暴搜(Counting Cliques,hdu 5952)
- iOS-图文表并茂,手把手教你GCD
- hls之m3u8、ts流格式详解
- redis 启动脚本
- 当一进入到搜索界面就弹出软键盘
- Postgresql SQL 选择每组的前面几条记录
- 关于JComboBox触发事件总是执行两次的问题
- 自动更新替换方案二
- java 集合体系结构以及集合和数组的区别
- Linux下的常用命令(6.ls)
- Retrofit+RxJava
- qcom platform 子系统(7)
- HDFS挂载到本地硬盘