防止EditText自动获得焦点

相信被“EditText自动获得焦点”这个问题困扰的同学,实际上是被“EditText自动获得焦点,引发弹出软键盘”这个问题困扰。
如果是被软键盘问题困扰,请看:android:windowSoftInputMode 属性(输入法软键盘的那点事)

一、EditText不自动获得输入焦点
根据网上的办法整理如下:
step1.所有EditText的布局文件删除自动添加的
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中缺少会使得该方法无效,虽然我检验过仍然有效,但是保险起见也加上吧。

该方法有一个问题是,如果该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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值