Android 处理含有EditText的Activity虚拟键盘
在Android的Activity放置EditText之后,如果没有做特别的调整,每次一进入Activity,EditText都会自动取得焦点,然后弹出虚拟键盘,造成画面变得拥挤。虽然Android这样的设计是为了减少使用者点击萤幕的次数,但是并不是在所有情况下一进入Activity都需要自动弹出虚拟键盘,使用者可能只是要看资料而已(例如看聊天讯息)。
进入含有EditText的Activity时,不自动弹出虚拟键盘
解决一进入Activity就自动弹出虚拟键盘
只要在Activity的onCreate阶段,加上以下程式码即可。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
或是在AndroidManifest.xml中,设定Activity的android:windowSoftInputMode属性,如下:
<activity
android:name="org.magiclen.TestActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden" />
设定windowSoftInputMode属性为State Hidden之后,进入Activity时,EditText依然会取得焦点,但不会立刻弹出虚拟键盘,还要再点击一次EditText才会弹出键盘。问题成功解决了!
解决一弹出Dialog又再自动弹出虚拟键盘
Dialog中若有EditText,也会遇到和Activity一样,在出现Dialog的同时又再自动弹出虚拟键盘的状况。解决方法跟Activity相同,取得Dialog的Window后,使用setSoftInputMode方法来设定隐藏键盘,程式码如下:
AlertDialog dialog = new AlertDialog.Builder(this).setView(editText).create();
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
dialog.show();
Android中点击空白处隐藏软键盘
InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_DOWN) {
System.out.println("down");
if (RegisterActivity.this.getCurrentFocus() != null) {
if (RegisterActivity.this.getCurrentFocus().getWindowToken() != null) {
imm.hideSoftInputFromWindow(RegisterActivity.this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
return super.onTouchEvent(event);
}
Android 处理含有EditText的Activity虚拟键盘的更多相关文章
- 关于Android 打开新的Activity 虚拟键盘的弹出与不弹出
关于Android 打开新的Activity 虚拟键盘的弹出与不弹出 打开Activity 时 在相应的情况 弹出虚拟键盘 或者 隐藏虚拟键盘 会给用户非常好的用户体验 , 实现起来也比较简单 只需 ...
- Android适配底部返回键等虚拟键盘的完美解决方案
这个问题来来回回困扰了我很久,一直没能妥善解决. 场景1:华为手机遮挡了屏幕底部. 场景2:进入应用时,虚拟键自动缩回,留下空白区域. 需求: 需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占 ...
- Android 适配底部返回键等虚拟键盘的完美解决方案
这个问题来来回回困扰了我很久,一直没能妥善解决. 场景1:华为手机遮挡了屏幕底部. 场景2:进入应用时,虚拟键自动缩回,留下空白区域. 需求: 需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占 ...
- [问题]Android listView item edittext 不能调用软键盘输入法
android listview item edittext not softkeyboard edittext可以获取焦点, 可以触发事件, 但是就是不能调用输入法, 不知道为什么? 难道不能在i ...
- Android:不让 EditText 在 Activity 中自动弹出键盘
通过属性 android:windowSoftInputMode 可以做到隐藏键盘的. android:windowSoftInputMode 属性有: stateUnspecified,stateU ...
- Android开发:在EditText中关闭软键盘 转来的
1.EditText有焦点(focusable为true)阻止输入法弹出 editText=(EditText)findViewById(R.id.txtBody); editText.setOnTo ...
- android 点击edittext弹出软键盘,否则不弹
只需要加android:windowSoftInputMode="stateHidden|stateAlwaysHidden"就可以 如:<activity android: ...
- 【android】禁止Edittext弹出软键盘而且使光标正常显示
/** * 禁止Edittext弹出软件盘,光标依旧正常显示. */ public void disableShowSoftInput() { if (android.os.Build.VERSION ...
- Android虚拟键盘弹出时挡住EditText解决方法
在manifest的activity节点使用 Xml代码 <activity android:windowSoftInputMode="adjustResize"/> ...
随机推荐
- Python多线程1:threading
threading模块提供了高级别的线程接口,基于低级别的_thread模块实现. 模块基本方法 该模块定了的方法例如以下: threading.active_count() 返回当前 ...
- chrome 浏览器插件开发
一.chrome 浏览器插件开发是什么: 1 从技术上说插件只是一个存在于本地的一个网站.所以呢在插件开发的过程中用到的技术无非是 javascript .html .css . 二.把当前活动页面的 ...
- atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流 ...
- 以byte方式讀取SPD的數據(SMBus Controller在PCH中)
Reading A Byte of SMBus EEPROM DataThe following steps have to be followed for the System BIOS to re ...
- gdb前端: VIM+Pyclewn 调试C/C++
(gdb) mapkeys C-B : break "${fname}":${lnum} # set breakpoint at current line C-D : down C ...
- 实用crontab命令
常用crontab如下: crontab -e 编辑 crontabcrontab -l 显示 crontabcrontab -r 删除 crontabcrontab -v 显示上一次编辑 cro ...
- 基于redis的分布式缓存disgear开源到github上了
disgear是笔者参考solrcloud架构基于redis实现的分布式的缓存,支持数据切分到多台机器上,支持HA,支持读写分离和主节点失效自动选举,目前把它开放到github上,开放给大家 gith ...
- 每日英语:China Grapples With Genetically Modified Foods
A Chinese agricultural official's unsupported claims about the carcinogenic risks of consuming genet ...
- android monkey app乱点测试
Monkey是Android中的一个命令行工具 查看包名:查看电脑中某一位置的apk文件的包名:PC打开CMD-进入TMG目录-运行设备--查看包名aapt dump badging *.apk(ap ...
- 如何从CentOS官网下载我们想要的版本
今天想从官网下载6.5版本的CentOS,结果找了好一会儿才找到,赶紧记录下来,以备以后查询. 第一步在百度搜索centos,点击"Download CentOS",如下图所示. ...