EditText不自动获得输入焦点(以及 获得焦点但不弹出输入法软键盘的方法)

相信被“EditText自动获得焦点”这个问题困扰的同学,实际上是被“EditText自动获得焦点,引发弹出软键盘"这个问题困扰。

如果是被软键盘问题困扰,请看:android:windowSoftInputMode 属性(输入法软键盘的那点事)


一、EditText不自动获得输入焦点

根据网上的办法整理如下:

step1.所有EditText的布局文件删除自动添加的

step2.在第一个EditText之前,放一个不可见控件,让其获得焦点,从而截断了EditText获得焦点。(网上说让EditText的父级控件获得焦点,道理是一样的)。通常,放一个不可见的LinearLayout,如下:

            
                 
            
上述代码大意是使得LinearLayout可以获得焦点。有网友说LinearLayout中缺少会使得该方法无效,虽然我检验过仍然有效,但是保险起见也加上吧。


该方法有一个问题是,如果该LinearLayout存在focused或者pressed事件,如selector的变色,上述方法会触发这个事件。

而且,通过对微信的UI分析,我发现EditText较好的用户体验是:

进入一个页面时,第一个EditText获得焦点(光标开始闪烁),但是软键盘并不弹出。等用户单击一个EditText时,弹出软键盘。

所以,我认为真正的解决之道不是让EditText不获得焦点,而是获得焦点,但是不弹出软键盘


二、EditText获得焦点,但不弹出软键盘

方法: 工程->Manifest.xml的Application->Activity节点中指定EditText所在活动,该activity的设定android:windowSoftInputMode 属性为stateHidden,如:

        
        
关于android:windowSoftInputMode 属性,见页首链接。


你可能感兴趣的:(android)