新打开acitivyt时,EditText焦点自动带出软键盘问题解决方法总结(转)
2012-10-25 17:41
411 查看
原因分析:
Android新启动Activity,dialog或者其他窗体中中包含EditText, 新启动的activity的焦点默认在EditText上,这时候android系统会自动弹出软键盘。这会导致挤压activity本来的界面,影响美观。
几种解决方法:
一、解决效果:activity打开,软键盘不自动打开,焦点不在editText上面。当点击editText,再打开软键盘
具体方法:在onCreate()方法中将焦点放在另一个view上. view使用requestFocus()焦点,但是如果让button或者textView之类控件直接使用requestFocus()方法,则无法 获取焦点,焦点会依然在editText上。
只能在使用View的requestFocus()方法之前调用下面2个方法,view才可获取焦点:
view.setFocusable(true);
view.setFocusableInTouchMode(true);
然后调用 requestFocus()即可获取焦点。
二、解决效果:activity打开,软键盘不自动打开,焦点落在editText上面。当点击editText,再打开软键盘
具体方法:在Activity中OnCreate方法里面加下面这句代码 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或者在AndroidManifest.xml中该activity处添加android:windowSoftInputMode属性
eg. <activity android:name="SelectPartsActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden" />
PS:如果实在不放心,可以两个都添加
三、解决效果:android机顶盒开发时,长按遥控器OK键(此处的长按操作一般都为用户按键时间过长导致的误操作,而不是有意长按)打开Activity,软键盘不自动打开,焦点落在editText上面。
解决方法(本人未测试,不知是否可用):在OnCreate中设置延时,必须等延时事件完毕才让EditText能获得焦点弹出软键盘;或者让EditText一直获得焦点,必须延时事件结束后EditText才能响应软键盘弹出事件。此处用到Timer辅助实现。
eg. @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//此处EditText获得焦点或者软键盘弹出操作
...................
// InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(INPUT_METHOD_SERVICE);
// imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 1000); //在一秒后操作
}
自动关闭:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
Android新启动Activity,dialog或者其他窗体中中包含EditText, 新启动的activity的焦点默认在EditText上,这时候android系统会自动弹出软键盘。这会导致挤压activity本来的界面,影响美观。
几种解决方法:
一、解决效果:activity打开,软键盘不自动打开,焦点不在editText上面。当点击editText,再打开软键盘
具体方法:在onCreate()方法中将焦点放在另一个view上. view使用requestFocus()焦点,但是如果让button或者textView之类控件直接使用requestFocus()方法,则无法 获取焦点,焦点会依然在editText上。
只能在使用View的requestFocus()方法之前调用下面2个方法,view才可获取焦点:
view.setFocusable(true);
view.setFocusableInTouchMode(true);
然后调用 requestFocus()即可获取焦点。
二、解决效果:activity打开,软键盘不自动打开,焦点落在editText上面。当点击editText,再打开软键盘
具体方法:在Activity中OnCreate方法里面加下面这句代码 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或者在AndroidManifest.xml中该activity处添加android:windowSoftInputMode属性
eg. <activity android:name="SelectPartsActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden" />
PS:如果实在不放心,可以两个都添加
三、解决效果:android机顶盒开发时,长按遥控器OK键(此处的长按操作一般都为用户按键时间过长导致的误操作,而不是有意长按)打开Activity,软键盘不自动打开,焦点落在editText上面。
解决方法(本人未测试,不知是否可用):在OnCreate中设置延时,必须等延时事件完毕才让EditText能获得焦点弹出软键盘;或者让EditText一直获得焦点,必须延时事件结束后EditText才能响应软键盘弹出事件。此处用到Timer辅助实现。
eg. @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//此处EditText获得焦点或者软键盘弹出操作
...................
// InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(INPUT_METHOD_SERVICE);
// imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 1000); //在一秒后操作
}
自动关闭:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
相关文章推荐
- 新打开acitivyt时,EditText焦点自动带出软键盘问题解决方法总结
- 新打开acitivyt时,EditText焦点自动带出软键盘问题解决方法总结 ... ...
- EditText焦点自动带出软键盘问题解决方法总结
- activity打开时,EditText获取焦点,打开软键盘的解决方法
- Gentoo - U盘无法自动挂载,打开报告Not Authorized,xfce只有logout,suspend/shutdown灰化等问题解决方法
- [经验总结]Windows Vim打开utf-8文件乱码问题的解决方法
- Android禁止EditText自动弹出软键盘的方法及遇到问题
- editText自动获得焦点问题解决
- EditText自动弹出软键盘的原因及解决方法
- ShowModelessDialog打开页面自动刷新问题解决方法【原】
- Gentoo - U盘无法自动挂载,打开报告Not Authorized,xfce只有logout,suspend/shutdown灰化等问题解决方法
- MyEclipse不能自动编译解决方法总结(转)/debug时断点乱跳问题的解决办法
- [Android]去除EditText自动获得的焦点,解决软键盘弹出问题
- EditText不自动获得输入焦点(以及 获得焦点但不弹出输入法软键盘的方法)
- 解决刚进入APP时搜索框获取焦点,软键盘自动弹出的问题
- Excel2007打开逗号分隔的csv文件不自动分列的问题解决方法
- Edittext不自动获取焦点解决方法以及获取焦点后的事件实现方法
- 【问题记录】解决,打开app时,EditView的自动获得焦点,并且软键盘弹出
- Ionic--再次打开自动填充用户名和密码的问题解决方法
- 打开layout/main.xml时Eclipse自动关闭的问题解决方法。