EditText不自动获得输入焦点(以及 获得焦点但不弹出输入法软键盘的方法)
2016-06-17 11:03
489 查看
转载地址: http://m.blog.csdn.net/article/details?id=48414821
相信被“EditText自动获得焦点”这个问题困扰的同学,实际上是被“EditText自动获得焦点,引发弹出软键盘"这个问题困扰。
如果是被软键盘问题困扰,请看:android:windowSoftInputMode 属性(输入法软键盘的那点事)
一、EditText不自动获得输入焦点
根据网上的办法整理如下:
step1.所有EditText的布局文件删除自动添加的<requestFocus />
step2.在第一个EditText之前,放一个不可见控件,让其获得焦点,从而截断了EditText获得焦点。(网上说让EditText的父级控件获得焦点,道理是一样的)。通常,放一个不可见的LinearLayout,如下:
该方法有一个问题是,如果该LinearLayout存在focused或者pressed事件,如selector的变色,上述方法会触发这个事件。
而且,通过对微信的UI分析,我发现EditText较好的用户体验是:
进入一个页面时,第一个EditText获得焦点(光标开始闪烁),但是软键盘并不弹出。等用户单击一个EditText时,弹出软键盘。
所以,我认为真正的解决之道不是让EditText不获得焦点,而是获得焦点,但是不弹出软键盘
二、EditText获得焦点,但不弹出软键盘
方法: 工程->Manifest.xml的Application->Activity节点中指定EditText所在活动,该activity的设定android:windowSoftInputMode 属性为stateHidden,如:
关于android:windowSoftInputMode 属性,见页首链接。
相信被“EditText自动获得焦点”这个问题困扰的同学,实际上是被“EditText自动获得焦点,引发弹出软键盘"这个问题困扰。
如果是被软键盘问题困扰,请看:android:windowSoftInputMode 属性(输入法软键盘的那点事)
一、EditText不自动获得输入焦点
根据网上的办法整理如下:
step1.所有EditText的布局文件删除自动添加的<requestFocus />
step2.在第一个EditText之前,放一个不可见控件,让其获得焦点,从而截断了EditText获得焦点。(网上说让EditText的父级控件获得焦点,道理是一样的)。通常,放一个不可见的LinearLayout,如下:
<LinearLayout android:id="@+id/getfocus" android:layout_width="0px" android:layout_height="0px" android:focusable="true" android:focusableInTouchMode="true" android:orientation="horizontal" > <requestFocus /> </LinearLayout>上述代码大意是使得LinearLayout可以获得焦点。有网友说LinearLayout中缺少<requestFocus />会使得该方法无效,虽然我检验过仍然有效,但是保险起见也加上吧。
该方法有一个问题是,如果该LinearLayout存在focused或者pressed事件,如selector的变色,上述方法会触发这个事件。
而且,通过对微信的UI分析,我发现EditText较好的用户体验是:
进入一个页面时,第一个EditText获得焦点(光标开始闪烁),但是软键盘并不弹出。等用户单击一个EditText时,弹出软键盘。
所以,我认为真正的解决之道不是让EditText不获得焦点,而是获得焦点,但是不弹出软键盘
二、EditText获得焦点,但不弹出软键盘
方法: 工程->Manifest.xml的Application->Activity节点中指定EditText所在活动,该activity的设定android:windowSoftInputMode 属性为stateHidden,如:
<activity android:name="com.navigator.LoginActivity" android:label="@string/title_activity_login" android:windowSoftInputMode="adjustResize|stateHidden" > </activity>
关于android:windowSoftInputMode 属性,见页首链接。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories