资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

EditText焦点自动带出软键盘问题-创新互联

总结一下网上的办法
可是一个都不管用
我想真的是应该我的虚拟机出问题了
神啊
让我赶紧有钱买安卓手机吧。。
(那种很便宜的真心不想买。。。感觉。。不划算。。OTZ

========================================================================原因分析:
       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.                                                  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);

引用自http://www.eoeandroid.com/blog-687425-4752.html

==================================================================
刚进入activity的时候,如果布局组件有edittext的话,往往edittext会获取焦点,自动弹出软键盘,影响整个界面的视觉效果。解决方法如下:

可以在edittext的父布局结构中(例如LinearLayout,RelativeLayout等)添加

view sourceprint?
android:focusable="true"
android:focusableInTouchMode="true"


android:id="@+id/txtNotuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:textIsSelectable="true" />

创新互联主营东城网站建设的网络公司,主营网站建设方案,重庆APP开发,东城h5微信小程序定制开发搭建,东城网站营销推广欢迎东城等地区企业咨询

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:EditText焦点自动带出软键盘问题-创新互联
分享路径:http://www.cdkjz.cn/article/hdgjc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220